39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
export class Permissions {
|
|
data = {
|
|
uploadVersions: false,
|
|
deleteVersion: false,
|
|
editDetails: false,
|
|
editBody: false,
|
|
manageInvites: false,
|
|
removeMember: false,
|
|
editMember: false,
|
|
deleteProject: false,
|
|
};
|
|
|
|
get settingsPage(): boolean {
|
|
return (
|
|
this.data.manageInvites ||
|
|
this.data.removeMember ||
|
|
this.data.editMember ||
|
|
this.data.deleteProject
|
|
);
|
|
}
|
|
|
|
constructor(from: number | 'ALL' | null) {
|
|
if (from === 'ALL' || from === 0b11111111 || from === null) {
|
|
Object.keys(this.data).forEach((v) => (this.data[v] = true));
|
|
} else if (typeof from === 'number') {
|
|
this.data = {
|
|
uploadVersions: !!(from & (1 << 0)),
|
|
deleteVersion: !!(from & (1 << 1)),
|
|
editDetails: !!(from & (1 << 2)),
|
|
editBody: !!(from & (1 << 3)),
|
|
manageInvites: !!(from & (1 << 4)),
|
|
removeMember: !!(from & (1 << 5)),
|
|
editMember: !!(from & (1 << 6)),
|
|
deleteProject: !!(from & (1 << 7)),
|
|
};
|
|
}
|
|
}
|
|
}
|