import React, { PureComponent } from 'react'; import { ConfirmButton, RadioButtonGroup, Icon } from '@grafana/ui'; import { cx } from '@emotion/css'; import { AccessControlAction } from 'app/types'; import { contextSrv } from 'app/core/core'; interface Props { isGrafanaAdmin: boolean; onGrafanaAdminChange: (isGrafanaAdmin: boolean) => void; } interface State { isEditing: boolean; currentAdminOption: string; } const adminOptions = [ { label: 'Yes', value: 'YES' }, { label: 'No', value: 'NO' }, ]; export class UserPermissions extends PureComponent { state = { isEditing: false, currentAdminOption: this.props.isGrafanaAdmin ? 'YES' : 'NO', }; onChangeClick = () => { this.setState({ isEditing: true }); }; onCancelClick = () => { this.setState({ isEditing: false, currentAdminOption: this.props.isGrafanaAdmin ? 'YES' : 'NO', }); }; onGrafanaAdminChange = () => { const { currentAdminOption } = this.state; const newIsGrafanaAdmin = currentAdminOption === 'YES' ? true : false; this.props.onGrafanaAdminChange(newIsGrafanaAdmin); }; onAdminOptionSelect = (value: string) => { this.setState({ currentAdminOption: value }); }; render() { const { isGrafanaAdmin } = this.props; const { isEditing, currentAdminOption } = this.state; const changeButtonContainerClass = cx('pull-right'); const canChangePermissions = contextSrv.hasPermission(AccessControlAction.UsersPermissionsUpdate); return ( <>

Permissions

{isEditing ? ( ) : ( )}
Grafana Admin {isGrafanaAdmin ? ( <> Yes ) : ( <>No )}
{canChangePermissions && ( Change )}
); } }