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