42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
export const PEMRISSION_VIEW_FEEDS = 0x0000000000100000;
|
|
export const PERMISSION_INVITE_USERS = 0x0000000000010000;
|
|
export const PERMISSION_MANAGE_USERS = 0x0000000000000400;
|
|
export const PERMISSION_MANAGE_TAXONOMIES = 0x0000000000000100;
|
|
export const PERMISSION_MANAGE_FEDERATION = 0x0000000000000020;
|
|
|
|
export const PERMISSION_MANAGE_REPORTS = 0x0000000000000010;
|
|
export const PERMISSION_VIEW_DASHBOARD = 0x0000000000000008;
|
|
|
|
// These helpers don't quite align with the names/categories in UserRole,
|
|
// but are likely "good enough" for the use cases at present.
|
|
//
|
|
// See: https://docs.joinmastodon.org/entities/Role/#permission-flags
|
|
|
|
export function canViewAdminDashboard(permissions: number) {
|
|
return (
|
|
(permissions & PERMISSION_VIEW_DASHBOARD) === PERMISSION_VIEW_DASHBOARD
|
|
);
|
|
}
|
|
|
|
export function canManageReports(permissions: number) {
|
|
return (
|
|
(permissions & PERMISSION_MANAGE_REPORTS) === PERMISSION_MANAGE_REPORTS
|
|
);
|
|
}
|
|
|
|
export const canViewFeed = (
|
|
signedIn: boolean,
|
|
permissions: number,
|
|
setting: 'public' | 'authenticated' | 'disabled' | undefined,
|
|
) => {
|
|
switch (setting) {
|
|
case 'public':
|
|
return true;
|
|
case 'authenticated':
|
|
return signedIn;
|
|
case 'disabled':
|
|
default:
|
|
return (permissions & PEMRISSION_VIEW_FEEDS) === PEMRISSION_VIEW_FEEDS;
|
|
}
|
|
};
|