You've already forked AstralRinth
forked from didirus/AstralRinth
Update Permissions class & docs
This commit is contained in:
@@ -1,38 +1,42 @@
|
|||||||
export class Permissions {
|
export class Permissions {
|
||||||
data = {
|
uploadVersions = false
|
||||||
uploadVersions: false,
|
deleteVersion = false
|
||||||
deleteVersion: false,
|
editDetails = false
|
||||||
editDetails: false,
|
editBody = false
|
||||||
editBody: false,
|
manageInvites = false
|
||||||
manageInvites: false,
|
removeMember = false
|
||||||
removeMember: false,
|
editMember = false
|
||||||
editMember: false,
|
deleteProject = false
|
||||||
deleteProject: false,
|
|
||||||
}
|
|
||||||
|
|
||||||
get settingsPage(): boolean {
|
get settingsPage(): boolean {
|
||||||
|
return this.manageInvites || this.removeMember || this.editMember || this.deleteProject
|
||||||
|
}
|
||||||
|
|
||||||
|
toInteger(): number {
|
||||||
return (
|
return (
|
||||||
this.data.manageInvites ||
|
(this.uploadVersions ? 1 : 0) |
|
||||||
this.data.removeMember ||
|
(this.deleteVersion ? 1 << 1 : 0) |
|
||||||
this.data.editMember ||
|
(this.editDetails ? 1 << 2 : 0) |
|
||||||
this.data.deleteProject
|
(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) {
|
constructor(from: number | 'ALL' | null) {
|
||||||
if (from === 'ALL' || from === 0b11111111 || from === 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') {
|
} else if (typeof from === 'number') {
|
||||||
this.data = {
|
this.uploadVersions = !!(from & (1 << 0))
|
||||||
uploadVersions: !!(from & (1 << 0)),
|
this.deleteVersion = !!(from & (1 << 1))
|
||||||
deleteVersion: !!(from & (1 << 1)),
|
this.editDetails = !!(from & (1 << 2))
|
||||||
editDetails: !!(from & (1 << 2)),
|
this.editBody = !!(from & (1 << 3))
|
||||||
editBody: !!(from & (1 << 3)),
|
this.manageInvites = !!(from & (1 << 4))
|
||||||
manageInvites: !!(from & (1 << 4)),
|
this.removeMember = !!(from & (1 << 5))
|
||||||
removeMember: !!(from & (1 << 5)),
|
this.editMember = !!(from & (1 << 6))
|
||||||
editMember: !!(from & (1 << 6)),
|
this.deleteProject = !!(from & (1 << 7))
|
||||||
deleteProject: !!(from & (1 << 7)),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.
|
The `Permissions` class provides an easy way to manage user permissions.
|
||||||
|
|
||||||
```ts
|
```svelte example raised
|
||||||
|
<script lang="ts">
|
||||||
import { Permissions } from 'omorphia/utils'
|
import { Permissions } from 'omorphia/utils'
|
||||||
|
|
||||||
const adminLevel = new Permissions('ALL')
|
const permissions = new Permissions(128) // Can be integer or 'ALL'
|
||||||
const memberLevel = new Permissions(member.permissions) /* `member` from API */
|
</script>
|
||||||
const userLevel = new Permissions(0)
|
|
||||||
|
|
||||||
if (memberLevel.data.uploadVersions) {
|
<p>
|
||||||
console.log('Can upload versions!')
|
<input type="checkbox" bind:checked={permissions.uploadVersions} id="ex-1"/>
|
||||||
}
|
<label for="ex-1">Can edit versions</label><br>
|
||||||
|
<input type="checkbox" bind:checked={permissions.deleteProject} id="ex-2"/>
|
||||||
|
<label for="ex-2">Can delete project</label><br><br>
|
||||||
|
|
||||||
|
Integer: {permissions.toInteger()}<br>
|
||||||
|
Can access settings page: {permissions.settingsPage}
|
||||||
|
</p>
|
||||||
```
|
```
|
||||||
|
|
||||||
## Versions
|
## Versions
|
||||||
|
|||||||
Reference in New Issue
Block a user