diff --git a/src/package/utils/permissions.ts b/src/package/utils/permissions.ts index 0f53935e2..7a9c3f350 100644 --- a/src/package/utils/permissions.ts +++ b/src/package/utils/permissions.ts @@ -1,38 +1,42 @@ export class Permissions { - data = { - uploadVersions: false, - deleteVersion: false, - editDetails: false, - editBody: false, - manageInvites: false, - removeMember: false, - editMember: false, - deleteProject: false, - } + 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.data.manageInvites || - this.data.removeMember || - this.data.editMember || - this.data.deleteProject + (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.data).forEach((v) => (this.data[v] = true)) + Object.keys(this).forEach((v) => (this[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)), - } + 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)) } } } diff --git a/src/routes/getting-started/utils.md b/src/routes/getting-started/utils.md index 5c6529893..a399c9d25 100644 --- a/src/routes/getting-started/utils.md +++ b/src/routes/getting-started/utils.md @@ -58,16 +58,22 @@ The `markdownInline` parser is perfect for translations and short bios. It doesn The `Permissions` class provides an easy way to manage user permissions. -```ts +```svelte example raised + -if (memberLevel.data.uploadVersions) { - console.log('Can upload versions!') -} +

+ +
+ +

+ + Integer: {permissions.toInteger()}
+ Can access settings page: {permissions.settingsPage} +

``` ## Versions