Skip to content

Commit

Permalink
Merge pull request #78 from infinitybase/lb/fix/workspace-permission
Browse files Browse the repository at this point in the history
Workspace Permissions
  • Loading branch information
guimroque authored Feb 28, 2024
2 parents 3f5261b + 5a2fabf commit 8d2f541
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 33 deletions.
55 changes: 30 additions & 25 deletions src/models/Workspace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,42 +32,47 @@ export enum PermissionRoles {
VIEWER = 'VIEWER',
}

export enum PermissionAccess {
ALL = '*',
NONE = '',
}

//todo: change to specific permissions of each role depends the complete flow
export const defaultPermissions = {
[PermissionRoles.OWNER]: {
OWNER: ['*'],
ADMIN: [''],
MANAGER: [''],
SIGNER: [''],
VIEWER: [''],
OWNER: [PermissionAccess.ALL],
ADMIN: [PermissionAccess.NONE],
MANAGER: [PermissionAccess.NONE],
SIGNER: [PermissionAccess.NONE],
VIEWER: [PermissionAccess.NONE],
},
[PermissionRoles.ADMIN]: {
OWNER: [''],
ADMIN: ['*'],
MANAGER: [''],
SIGNER: [''],
VIEWER: [''],
OWNER: [PermissionAccess.NONE],
ADMIN: [PermissionAccess.ALL],
MANAGER: [PermissionAccess.NONE],
SIGNER: [PermissionAccess.NONE],
VIEWER: [PermissionAccess.NONE],
},
[PermissionRoles.MANAGER]: {
OWNER: [''],
ADMIN: [''],
MANAGER: ['*'],
SIGNER: [''],
VIEWER: [''],
OWNER: [PermissionAccess.NONE],
ADMIN: [PermissionAccess.NONE],
MANAGER: [PermissionAccess.ALL],
SIGNER: [PermissionAccess.NONE],
VIEWER: [PermissionAccess.NONE],
},
[PermissionRoles.SIGNER]: {
OWNER: [''],
ADMIN: [''],
MANAGER: [''],
SIGNER: [''],
VIEWER: [''],
OWNER: [PermissionAccess.NONE],
ADMIN: [PermissionAccess.NONE],
MANAGER: [PermissionAccess.NONE],
SIGNER: [PermissionAccess.NONE],
VIEWER: [PermissionAccess.NONE],
},
[PermissionRoles.VIEWER]: {
OWNER: [''],
ADMIN: [''],
MANAGER: [''],
SIGNER: [''],
VIEWER: ['*'],
OWNER: [PermissionAccess.NONE],
ADMIN: [PermissionAccess.NONE],
MANAGER: [PermissionAccess.NONE],
SIGNER: [PermissionAccess.NONE],
VIEWER: [PermissionAccess.ALL],
},
};

Expand Down
14 changes: 8 additions & 6 deletions src/modules/workspace/controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import axios from 'axios';
import { defaultConfig } from 'bsafe';
import { BN, bn } from 'fuels';

import { Predicate, User } from '@src/models';
import { PermissionAccess, Predicate, User } from '@src/models';
import {
PermissionRoles,
Workspace,
Expand Down Expand Up @@ -186,14 +186,16 @@ export class WorkspaceController {
});
}

const signer_permissions =
workspace.permissions[member][PermissionRoles.SIGNER];
permissions[PermissionRoles.SIGNER] = signer_permissions;
const memberPermission = workspace.permissions[member];
const signerPermission = memberPermission?.[PermissionRoles.SIGNER];

// update user permissions exepct signer objet
// update user permissions expect signer object
workspace.permissions = {
...workspace.permissions,
[member]: permissions,
[member]: {
...permissions,
SIGNER: signerPermission ?? [PermissionAccess.NONE],
},
};

return await workspace.save();
Expand Down
6 changes: 4 additions & 2 deletions src/modules/workspace/services.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { defaultConfig } from 'bsafe';

import { User } from '@src/models';
import { PermissionAccess, User } from '@src/models';
import {
IPermissions,
PermissionRoles,
Expand Down Expand Up @@ -225,7 +225,9 @@ export class WorkspaceService implements IWorkspaceService {
signers.map(s => {
if (p[s]) {
p[s][PermissionRoles.SIGNER] = [
...p[s][PermissionRoles.SIGNER].filter(i => i != '*'),
...p[s][PermissionRoles.SIGNER].filter(
i => i != PermissionAccess.ALL && i !== PermissionAccess.NONE,
),
predicate,
];
} else {
Expand Down

0 comments on commit 8d2f541

Please sign in to comment.