Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/resources/scripts/state/permissions.ts
7459 views
1
import { action, Action, thunk, Thunk } from 'easy-peasy';
2
import getSystemPermissions from '@/api/getSystemPermissions';
3
4
export interface PanelPermissions {
5
[key: string]: {
6
description: string;
7
keys: { [k: string]: string };
8
};
9
}
10
11
export interface GloablPermissionsStore {
12
data: PanelPermissions;
13
setPermissions: Action<GloablPermissionsStore, PanelPermissions>;
14
getPermissions: Thunk<GloablPermissionsStore, void, Record<string, unknown>, any, Promise<void>>;
15
}
16
17
const permissions: GloablPermissionsStore = {
18
data: {},
19
20
setPermissions: action((state, payload) => {
21
state.data = payload;
22
}),
23
24
getPermissions: thunk(async (actions) => {
25
const permissions = await getSystemPermissions();
26
27
actions.setPermissions(permissions);
28
}),
29
};
30
31
export default permissions;
32
33