diff options
Diffstat (limited to 'shared/core-utils/users/user-role.ts')
-rw-r--r-- | shared/core-utils/users/user-role.ts | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/shared/core-utils/users/user-role.ts b/shared/core-utils/users/user-role.ts new file mode 100644 index 000000000..2b322faf3 --- /dev/null +++ b/shared/core-utils/users/user-role.ts | |||
@@ -0,0 +1,35 @@ | |||
1 | import { UserRight, UserRole } from '../../models/users' | ||
2 | |||
3 | export const USER_ROLE_LABELS: { [ id in UserRole ]: string } = { | ||
4 | [UserRole.USER]: 'User', | ||
5 | [UserRole.MODERATOR]: 'Moderator', | ||
6 | [UserRole.ADMINISTRATOR]: 'Administrator' | ||
7 | } | ||
8 | |||
9 | const userRoleRights: { [ id in UserRole ]: UserRight[] } = { | ||
10 | [UserRole.ADMINISTRATOR]: [ | ||
11 | UserRight.ALL | ||
12 | ], | ||
13 | |||
14 | [UserRole.MODERATOR]: [ | ||
15 | UserRight.MANAGE_VIDEO_BLACKLIST, | ||
16 | UserRight.MANAGE_ABUSES, | ||
17 | UserRight.REMOVE_ANY_VIDEO, | ||
18 | UserRight.REMOVE_ANY_VIDEO_CHANNEL, | ||
19 | UserRight.REMOVE_ANY_VIDEO_PLAYLIST, | ||
20 | UserRight.REMOVE_ANY_VIDEO_COMMENT, | ||
21 | UserRight.UPDATE_ANY_VIDEO, | ||
22 | UserRight.SEE_ALL_VIDEOS, | ||
23 | UserRight.MANAGE_ACCOUNTS_BLOCKLIST, | ||
24 | UserRight.MANAGE_SERVERS_BLOCKLIST, | ||
25 | UserRight.MANAGE_USERS | ||
26 | ], | ||
27 | |||
28 | [UserRole.USER]: [] | ||
29 | } | ||
30 | |||
31 | export function hasUserRight (userRole: UserRole, userRight: UserRight) { | ||
32 | const userRights = userRoleRights[userRole] | ||
33 | |||
34 | return userRights.includes(UserRight.ALL) || userRights.includes(userRight) | ||
35 | } | ||