Move SSOSettings to settings db & initialize with env vars

This commit is contained in:
advplyr 2022-02-07 16:58:11 -06:00
parent c11c0ff54e
commit adae905953
5 changed files with 49 additions and 27 deletions

View File

@ -1,6 +1,3 @@
import Vue from 'vue'
const defaultSSOSettings = {
oidc: {
issuer: "",
@ -10,7 +7,7 @@ const defaultSSOSettings = {
clientID: "",
clientSecret: "",
callbackURL: "/oidc/callback",
scope: "openid email profile"
scope: "openid email profile"
},
user: {
createNewUser: false,

View File

@ -13,12 +13,12 @@ if (isDev) {
process.env.AUDIOBOOK_PATH = devEnv.AudiobookPath
process.env.FFMPEG_PATH = devEnv.FFmpegPath
process.env.FFPROBE_PATH = devEnv.FFProbePath
process.env.OIDC_CLIENT_ID = devEnv.OIDC.ClientID
process.env.OIDC_CLIENT_SECRET = devEnv.OIDC.ClientSecret
process.env.OIDC_ISSUER = devEnv.OIDC.Issuer
process.env.OIDC_AUTHORIZATION_URL = devEnv.OIDC.AuthorizationURL
process.env.OIDC_TOKEN_URL = devEnv.OIDC.TokenURL
process.env.OIDC_USER_INFO_URL = devEnv.OIDC.UserInfoURL
process.env.OIDC_CLIENT_ID = devEnv.OIDC ? devEnv.OIDC.ClientID : ''
process.env.OIDC_CLIENT_SECRET = devEnv.OIDC ? devEnv.OIDC.ClientSecret : ''
process.env.OIDC_ISSUER = devEnv.OIDC ? devEnv.OIDC.Issuer : ''
process.env.OIDC_AUTHORIZATION_URL = devEnv.OIDC ? devEnv.OIDC.AuthorizationURL : ''
process.env.OIDC_TOKEN_URL = devEnv.OIDC ? devEnv.OIDC.TokenURL : ''
process.env.OIDC_USER_INFO_URL = devEnv.OIDC ? devEnv.OIDC.UserInfoURL : ''
}
const PORT = process.env.PORT || 80

17
njodb.properties Normal file
View File

@ -0,0 +1,17 @@
{
"datadir": "data",
"dataname": "data",
"datastores": 2,
"tempdir": "tmp",
"lockoptions": {
"stale": 5000,
"update": 1000,
"retries": {
"retries": 5000,
"minTimeout": 250,
"maxTimeout": 5000,
"factor": 0.15,
"randomize": false
}
}
}

View File

@ -31,7 +31,6 @@ class Db {
this.sessionsDb = new njodb.Database(this.SessionsPath)
this.librariesDb = new njodb.Database(this.LibrariesPath, { datastores: 2 })
this.settingsDb = new njodb.Database(this.SettingsPath, { datastores: 2 })
this.SSODb = new njodb.Database(this.SSODb, { datastores: 2 })
this.collectionsDb = new njodb.Database(this.CollectionsPath, { datastores: 2 })
this.authorsDb = new njodb.Database(this.AuthorsPath)
@ -132,6 +131,11 @@ class Db {
this.serverSettings = new ServerSettings()
await this.insertEntity('settings', this.serverSettings)
}
if (!this.SSOSettings) {
this.SSOSettings = new SSOSettings()
await this.insertEntity('settings', this.SSOSettings)
}
}
async load() {
@ -150,6 +154,7 @@ class Db {
let p4 = this.settingsDb.select(() => true).then((results) => {
if (results.data && results.data.length) {
this.settings = results.data
let serverSettings = this.settings.find(s => s.id === 'server-settings')
if (serverSettings) {
this.serverSettings = new ServerSettings(serverSettings)
@ -159,6 +164,11 @@ class Db {
this.previousVersion = this.serverSettings.version || '1.0.0'
}
}
let ssoSettings = this.settings.find(s => s.id === 'sso-settings')
if (ssoSettings) {
this.SSOSettings = new SSOSettings(ssoSettings)
}
}
})
let p5 = this.collectionsDb.select(() => true).then((results) => {
@ -169,10 +179,7 @@ class Db {
this.authors = results.data.map(l => new Author(l))
Logger.info(`[DB] ${this.authors.length} Authors Loaded`)
})
let p7 = this.SSODb.select(() => true).then((results) => {
this.SSOSettings = new SSOSettings(results.data)
})
await Promise.all([p1, p2, p3, p4, p5, p6, p7])
await Promise.all([p1, p2, p3, p4, p5, p6])
// Update server version in server settings
if (this.previousVersion) {

View File

@ -4,14 +4,14 @@ const User = require('./User')
const defaultSettings = {
oidc: {
issuer: "",
authorizationURL: "",
tokenURL: "",
userInfoURL: "",
clientID: "",
clientSecret: "",
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 || '',
callbackURL: "/oidc/callback",
scope: "openid email profile"
scope: "openid email profile"
},
user: {
createNewUser: false,
@ -38,16 +38,17 @@ const defaultSettings = {
}
class SSOSettings {
constructor(settings=defaultSettings) {
constructor(settings = defaultSettings) {
this.id = 'sso-settings'
this.oidc = {...settings.oidc}
this.user = {...settings.user}
this.oidc = { ...settings.oidc }
this.user = { ...settings.user }
}
toJSON() {
return {
oidc: {...this.oidc},
user: {...this.user}
id: this.id,
oidc: { ...this.oidc },
user: { ...this.user }
}
}