import React, { Component } from 'react'; import PermissionsList from './PermissionsList'; import { observer } from 'mobx-react'; import UserPicker, { User } from 'app/core/components/Picker/UserPicker'; import TeamPicker, { Team } from 'app/core/components/Picker/TeamPicker'; import { aclTypes } from 'app/stores/PermissionsStore/PermissionsStore'; export interface DashboardAcl { id?: number; dashboardId?: number; userId?: number; userLogin?: string; userEmail?: string; teamId?: number; team?: string; permission?: number; permissionName?: string; role?: string; icon?: string; nameHtml?: string; inherited?: boolean; sortName?: string; sortRank?: number; } export interface IProps { dashboardId: number; folderTitle?: string; permissions?: any; isFolder: boolean; backendSrv: any; } @observer class Permissions extends Component { constructor(props) { super(props); const { dashboardId, isFolder } = this.props; this.permissionChanged = this.permissionChanged.bind(this); this.typeChanged = this.typeChanged.bind(this); this.removeItem = this.removeItem.bind(this); this.userPicked = this.userPicked.bind(this); this.teamPicked = this.teamPicked.bind(this); this.loadStore(dashboardId, isFolder); } loadStore(dashboardId, isFolder) { return this.props.permissions.load(dashboardId, isFolder); } permissionChanged(index: number, permission: number, permissionName: string) { const { permissions } = this.props; permissions.updatePermissionOnIndex(index, permission, permissionName); } removeItem(index: number) { const { permissions } = this.props; permissions.removeStoreItem(index); } resetNewType() { const { permissions } = this.props; permissions.resetNewType(); } typeChanged(evt) { const { value } = evt.target; const { permissions, dashboardId } = this.props; if (value === 'Viewer' || value === 'Editor') { permissions.addStoreItem({ permission: 1, role: value, dashboardId: dashboardId }, dashboardId); this.resetNewType(); return; } permissions.setNewType(value); } userPicked(user: User) { const { permissions } = this.props; return permissions.addStoreItem({ userId: user.id, userLogin: user.login, permission: 1 }); } teamPicked(team: Team) { const { permissions } = this.props; return permissions.addStoreItem({ teamId: team.id, team: team.name, permission: 1 }); } render() { const { permissions, folderTitle, backendSrv } = this.props; return (
Add Permission For
{permissions.newType === 'User' ? (
) : null} {permissions.newType === 'Group' ? (
) : null}
{permissions.error ? (
{permissions.error}
) : null}
); } } export default Permissions;