Picsur/backend/src/models/constants/roles.const.ts

53 lines
1.5 KiB
TypeScript
Raw Normal View History

2022-03-24 18:56:26 +00:00
import tuple from 'picsur-shared/dist/types/tuple';
2022-04-18 12:34:53 +00:00
import { Permission, Permissions, PermissionsList } from './permissions.const';
2022-03-24 18:56:26 +00:00
// Config
// These roles can never be removed or added to a user.
const SoulBoundRolesTuple = tuple('guest', 'user');
// These roles can never be modified
const ImmutableRolesTuple = tuple('admin');
// These roles can never be removed from the server
const UndeletableRolesTuple = tuple(
...SoulBoundRolesTuple,
...ImmutableRolesTuple,
);
2022-03-24 18:56:26 +00:00
// These roles will be applied by default to new users
export const DefaultRolesList: string[] = ['user'];
// Derivatives
export const SoulBoundRolesList: string[] = SoulBoundRolesTuple;
export const ImmutableRolesList: string[] = ImmutableRolesTuple;
export const UndeletableRolesList: string[] = UndeletableRolesTuple;
2022-07-04 15:11:42 +00:00
// Yes this is the undeletableroles list
export const SystemRolesList = UndeletableRolesList;
2022-03-24 18:56:26 +00:00
// Defaults
type SystemRole = typeof UndeletableRolesTuple[number];
const SystemRoleDefaultsTyped: {
[key in SystemRole]: Permissions;
} = {
2022-09-03 17:18:53 +00:00
guest: [
Permission.ImageView,
Permission.ImageDeleteKey,
Permission.UserLogin,
],
2022-03-24 18:56:26 +00:00
user: [
Permission.ImageView,
2022-09-03 17:18:53 +00:00
Permission.ImageDeleteKey,
Permission.ImageManage,
Permission.ImageUpload,
2022-03-24 19:05:32 +00:00
Permission.UserKeepLogin,
2022-03-24 18:56:26 +00:00
Permission.UserLogin,
Permission.Settings,
2022-09-03 15:07:43 +00:00
Permission.ApiKey,
2022-03-24 18:56:26 +00:00
],
// Grant all permissions to admin
admin: PermissionsList,
};
export const SystemRoleDefaults = SystemRoleDefaultsTyped as {
[key in string]: Permissions;
};