Jelajahi Sumber

fix: add permission fixes

Torkel Ödegaard 7 tahun lalu
induk
melakukan
331be7d47a

+ 16 - 10
public/app/core/components/PermissionList/AddPermission.tsx

@@ -26,28 +26,34 @@ class AddPermissions extends Component<Props, NewDashboardAclItem> {
     return {
       userId: 0,
       teamId: 0,
-      role: OrgRole.Viewer,
       type: AclTarget.Team,
       permission: PermissionLevel.View,
     };
   }
 
   onTypeChanged = evt => {
-    this.setState({ type: evt.target.value as AclTarget });
+    const type = evt.target.value as AclTarget;
+
+    switch (type) {
+      case AclTarget.User:
+      case AclTarget.Team:
+        this.setState({ type: type, userId: 0, teamId: 0, role: undefined });
+        break;
+      case AclTarget.Editor:
+        this.setState({ type: type, userId: 0, teamId: 0, role: OrgRole.Editor });
+        break;
+      case AclTarget.Viewer:
+        this.setState({ type: type, userId: 0, teamId: 0, role: OrgRole.Viewer });
+        break;
+    }
   };
 
   onUserSelected = (user: User) => {
-    this.setState({
-      userId: user ? user.id : 0,
-      teamId: 0,
-    });
+    this.setState({ userId: user ? user.id : 0 });
   };
 
   onTeamSelected = (team: Team) => {
-    this.setState({
-      userId: 0,
-      teamId: team ? team.id : 0,
-    });
+    this.setState({ teamId: team ? team.id : 0 });
   };
 
   onPermissionChanged = (permission: OptionWithDescription) => {

+ 24 - 0
public/app/features/dashboard/state/reducers.test.ts

@@ -0,0 +1,24 @@
+import { Action, ActionTypes } from './actions';
+import { OrgRole, PermissionLevel, DashboardState } from 'app/types';
+import { inititalState, dashboardReducer } from './reducers';
+
+describe('dashboard reducer', () => {
+  describe('loadDashboardPermissions', () => {
+    let state: DashboardState;
+
+    beforeEach(() => {
+      const action: Action = {
+        type: ActionTypes.LoadDashboardPermissions,
+        payload: [
+          { id: 2, dashboardId: 1, role: OrgRole.Viewer, permission: PermissionLevel.View },
+          { id: 3, dashboardId: 1, role: OrgRole.Editor, permission: PermissionLevel.Edit },
+        ],
+      };
+      state = dashboardReducer(inititalState, action);
+    });
+
+    it('should add permissions to state', async () => {
+      expect(state.permissions.length).toBe(2);
+    });
+  });
+});

+ 1 - 1
public/app/types/acl.ts

@@ -50,7 +50,7 @@ export interface DashboardPermissionInfo {
 export interface NewDashboardAclItem {
   teamId: number;
   userId: number;
-  role: OrgRole;
+  role?: OrgRole;
   permission: PermissionLevel;
   type: AclTarget;
 }