2022-02-07 17:08:52 +01:00
|
|
|
const { CoverDestination, BookCoverAspectRatio, BookshelfView } = require('../utils/constants')
|
|
|
|
|
const Logger = require('../Logger')
|
|
|
|
|
const User = require('./User')
|
|
|
|
|
|
|
|
|
|
const defaultSettings = {
|
|
|
|
|
oidc: {
|
2022-02-07 16:58:11 -06:00
|
|
|
issuer: process.env.OIDC_ISSUER || '',
|
|
|
|
|
authorizationURL: process.env.OIDC_AUTHORIZATION_URL || '',
|
|
|
|
|
tokenURL: process.env.OIDC_TOKEN_URL || '',
|
|
|
|
|
userInfoURL: process.env.OIDC_USER_INFO_URL || '',
|
|
|
|
|
clientID: process.env.OIDC_CLIENT_ID || '',
|
|
|
|
|
clientSecret: process.env.OIDC_CLIENT_SECRET || '',
|
2022-02-07 17:08:52 +01:00
|
|
|
callbackURL: "/oidc/callback",
|
2022-02-07 16:58:11 -06:00
|
|
|
scope: "openid email profile"
|
2022-02-07 17:08:52 +01:00
|
|
|
},
|
|
|
|
|
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 {
|
2022-02-07 16:58:11 -06:00
|
|
|
constructor(settings = defaultSettings) {
|
2022-02-07 17:08:52 +01:00
|
|
|
this.id = 'sso-settings'
|
2022-02-07 16:58:11 -06:00
|
|
|
this.oidc = { ...settings.oidc }
|
|
|
|
|
this.user = { ...settings.user }
|
2022-02-07 17:08:52 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
toJSON() {
|
|
|
|
|
return {
|
2022-02-07 16:58:11 -06:00
|
|
|
id: this.id,
|
|
|
|
|
oidc: { ...this.oidc },
|
|
|
|
|
user: { ...this.user }
|
2022-02-07 17:08:52 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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
|