From dbf09ad451ae96558020b2a167a680353a96c218 Mon Sep 17 00:00:00 2001 From: David Leimroth Date: Mon, 7 Feb 2022 17:08:52 +0100 Subject: [PATCH] added a SSOSettings class --- server/objects/SSOSettings.js | 68 +++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 server/objects/SSOSettings.js diff --git a/server/objects/SSOSettings.js b/server/objects/SSOSettings.js new file mode 100644 index 000000000..60a114005 --- /dev/null +++ b/server/objects/SSOSettings.js @@ -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 \ No newline at end of file