Adding permissions per user, add volume number sort

This commit is contained in:
Mark Cooper 2021-09-06 17:42:15 -05:00
parent 1d7d2a1dac
commit ee452d41ee
18 changed files with 241 additions and 43 deletions

View file

@ -11,13 +11,28 @@ class User {
this.isActive = true
this.createdAt = null
this.audiobooks = null
this.settings = {}
this.permissions = {}
if (user) {
this.construct(user)
}
}
get isRoot() {
return this.type === 'root'
}
get canDelete() {
return !!this.permissions.delete
}
get canUpdate() {
return !!this.permissions.update
}
get canDownload() {
return !!this.permissions.download
}
getDefaultUserSettings() {
return {
orderBy: 'book.title',
@ -28,6 +43,14 @@ class User {
}
}
getDefaultUserPermissions() {
return {
download: true,
update: true,
delete: this.id === 'root'
}
}
audiobooksToJSON() {
if (!this.audiobooks) return null
var _map = {}
@ -50,7 +73,8 @@ class User {
audiobooks: this.audiobooksToJSON(),
isActive: this.isActive,
createdAt: this.createdAt,
settings: this.settings
settings: this.settings,
permissions: this.permissions
}
}
@ -64,7 +88,8 @@ class User {
audiobooks: this.audiobooksToJSON(),
isActive: this.isActive,
createdAt: this.createdAt,
settings: this.settings
settings: this.settings,
permissions: this.permissions
}
}
@ -86,10 +111,12 @@ class User {
this.isActive = (user.isActive === undefined || user.id === 'root') ? true : !!user.isActive
this.createdAt = user.createdAt || Date.now()
this.settings = user.settings || this.getDefaultUserSettings()
this.permissions = user.permissions || this.getDefaultUserPermissions()
}
update(payload) {
var hasUpdates = false
// Update the following keys:
const keysToCheck = ['pash', 'type', 'username', 'isActive']
keysToCheck.forEach((key) => {
if (payload[key] !== undefined) {
@ -101,6 +128,15 @@ class User {
}
}
})
// And update permissions
if (payload.permissions) {
for (const key in payload.permissions) {
if (payload.permissions[key] !== this.permissions[key]) {
hasUpdates = true
this.permissions[key] = payload.permissions[key]
}
}
}
return hasUpdates
}