3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-10 04:25:01 +00:00

dashboard/api: add support for Zeppelin staff members; add ViewGuild permission; code cleanup

This commit is contained in:
Dragory 2020-05-23 16:22:03 +03:00
parent 7e60950900
commit d03d729438
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
13 changed files with 175 additions and 75 deletions

View file

@ -3,6 +3,7 @@ export enum ApiPermissions {
ManageAccess = "MANAGE_ACCESS",
EditConfig = "EDIT_CONFIG",
ReadConfig = "READ_CONFIG",
ViewGuild = "VIEW_GUILD",
}
const reverseApiPermissions = Object.entries(ApiPermissions).reduce((map, [key, value]) => {
@ -15,13 +16,24 @@ export const permissionNames = {
[ApiPermissions.ManageAccess]: "Manage dashboard access",
[ApiPermissions.EditConfig]: "Edit config",
[ApiPermissions.ReadConfig]: "Read config",
[ApiPermissions.ViewGuild]: "View server",
};
export type TPermissionHierarchy = Array<ApiPermissions | [ApiPermissions, TPermissionHierarchy]>;
// prettier-ignore-start
export const permissionHierarchy: TPermissionHierarchy = [
[ApiPermissions.Owner, [[ApiPermissions.ManageAccess, [[ApiPermissions.EditConfig, [ApiPermissions.ReadConfig]]]]]],
[
ApiPermissions.Owner,
[
[
ApiPermissions.ManageAccess,
[[ApiPermissions.EditConfig, [[ApiPermissions.ReadConfig, [ApiPermissions.ViewGuild]]]]],
],
],
],
];
// prettier-ignore-end
export function permissionArrToSet(permissions: string[]): Set<ApiPermissions> {
return new Set(permissions.filter(p => reverseApiPermissions[p])) as Set<ApiPermissions>;