added a SSOSettings class

This commit is contained in:
David Leimroth 2022-02-07 17:08:52 +01:00
parent 53e6c9f913
commit dbf09ad451

View File

@ -0,0 +1,68 @@
const { CoverDestination, BookCoverAspectRatio, BookshelfView } = require('../utils/constants')
const Logger = require('../Logger')
const User = require('./User')
const defaultSettings = {
oidc: {
issuer: "",
authorizationURL: "",
tokenURL: "",
userInfoURL: "",
clientID: "",
clientSecret: "",
callbackURL: "/oidc/callback",
scope: "openid email profile"
},
user: {
createNewUser: false,
isActive: true,
userSettings: {
mobileOrderBy: 'recent',
mobileOrderDesc: true,
mobileFilterBy: 'all',
orderBy: 'book.title',
orderDesc: false,
filterBy: 'all',
playbackRate: 1,
bookshelfCoverSize: 120,
collapseSeries: false
},
permissions: {
download: false,
update: false,
delete: false,
upload: false,
accessAllLibraries: false
}
}
}
class SSOSettings {
constructor(settings=defaultSettings) {
this.id = 'sso-settings'
this.oidc = {...settings.oidc}
this.user = {...settings.user}
}
toJSON() {
return {
oidc: {...this.oidc},
user: {...this.user}
}
}
update(payload) {
let hasUpdates = false
for (const key in payload) {
for (const setting in payload) {
if (!this[key] || this[key][setting] === payload[key][setting]) {
continue
}
this[key][setting] = payload[key][setting]
hasUpdates = true
}
}
return hasUpdates
}
}
module.exports = SSOSettings