summaryrefslogtreecommitdiff
path: root/lib/config
diff options
context:
space:
mode:
Diffstat (limited to 'lib/config')
-rw-r--r--lib/config/default.js23
-rw-r--r--lib/config/dockerSecret.js4
-rw-r--r--lib/config/environment.js29
-rw-r--r--lib/config/index.js6
-rw-r--r--lib/config/utils.js7
5 files changed, 63 insertions, 6 deletions
diff --git a/lib/config/default.js b/lib/config/default.js
index f4c45e3d..8d36db02 100644
--- a/lib/config/default.js
+++ b/lib/config/default.js
@@ -74,6 +74,11 @@ module.exports = {
clientSecret: undefined,
scope: undefined
},
+ mattermost: {
+ baseURL: undefined,
+ clientID: undefined,
+ clientSecret: undefined
+ },
dropbox: {
clientID: undefined,
clientSecret: undefined
@@ -91,8 +96,24 @@ module.exports = {
searchBase: undefined,
searchFilter: undefined,
searchAttributes: undefined,
+ usernameField: undefined,
tlsca: undefined
},
+ saml: {
+ idpSsoUrl: undefined,
+ idpCert: undefined,
+ issuer: undefined,
+ identifierFormat: 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
+ groupAttribute: undefined,
+ externalGroups: [],
+ requiredGroups: [],
+ attribute: {
+ id: undefined,
+ username: undefined,
+ email: undefined
+ }
+ },
email: true,
- allowemailregister: true
+ allowemailregister: true,
+ allowpdfexport: true
}
diff --git a/lib/config/dockerSecret.js b/lib/config/dockerSecret.js
index eea2fafd..ac54fd19 100644
--- a/lib/config/dockerSecret.js
+++ b/lib/config/dockerSecret.js
@@ -38,6 +38,10 @@ if (fs.existsSync(basePath)) {
clientID: getSecret('gitlab_clientID'),
clientSecret: getSecret('gitlab_clientSecret')
},
+ mattermost: {
+ clientID: getSecret('mattermost_clientID'),
+ clientSecret: getSecret('mattermost_clientSecret')
+ },
dropbox: {
clientID: getSecret('dropbox_clientID'),
clientSecret: getSecret('dropbox_clientSecret')
diff --git a/lib/config/environment.js b/lib/config/environment.js
index 40b7e09f..27e63591 100644
--- a/lib/config/environment.js
+++ b/lib/config/environment.js
@@ -1,6 +1,6 @@
'use strict'
-const {toBooleanConfig} = require('./utils')
+const {toBooleanConfig, toArrayConfig} = require('./utils')
module.exports = {
domain: process.env.HMD_DOMAIN,
@@ -15,7 +15,7 @@ module.exports = {
preload: toBooleanConfig(process.env.HMD_HSTS_PRELOAD)
},
protocolusessl: toBooleanConfig(process.env.HMD_PROTOCOL_USESSL),
- alloworigin: process.env.HMD_ALLOW_ORIGIN ? process.env.HMD_ALLOW_ORIGIN.split(',') : undefined,
+ alloworigin: toArrayConfig(process.env.HMD_ALLOW_ORIGIN),
usecdn: toBooleanConfig(process.env.HMD_USECDN),
allowanonymous: toBooleanConfig(process.env.HMD_ALLOW_ANONYMOUS),
allowfreeurl: toBooleanConfig(process.env.HMD_ALLOW_FREEURL),
@@ -49,6 +49,11 @@ module.exports = {
clientSecret: process.env.HMD_GITLAB_CLIENTSECRET,
scope: process.env.HMD_GITLAB_SCOPE
},
+ mattermost: {
+ baseURL: process.env.HMD_MATTERMOST_BASEURL,
+ clientID: process.env.HMD_MATTERMOST_CLIENTID,
+ clientSecret: process.env.HMD_MATTERMOST_CLIENTSECRET
+ },
dropbox: {
clientID: process.env.HMD_DROPBOX_CLIENTID,
clientSecret: process.env.HMD_DROPBOX_CLIENTSECRET
@@ -65,9 +70,25 @@ module.exports = {
tokenSecret: process.env.HMD_LDAP_TOKENSECRET,
searchBase: process.env.HMD_LDAP_SEARCHBASE,
searchFilter: process.env.HMD_LDAP_SEARCHFILTER,
- searchAttributes: process.env.HMD_LDAP_SEARCHATTRIBUTES,
+ searchAttributes: toArrayConfig(process.env.HMD_LDAP_SEARCHATTRIBUTES),
+ usernameField: process.env.HMD_LDAP_USERNAMEFIELD,
tlsca: process.env.HMD_LDAP_TLS_CA
},
+ saml: {
+ idpSsoUrl: process.env.HMD_SAML_IDPSSOURL,
+ idpCert: process.env.HMD_SAML_IDPCERT,
+ issuer: process.env.HMD_SAML_ISSUER,
+ identifierFormat: process.env.HMD_SAML_IDENTIFIERFORMAT,
+ groupAttribute: process.env.HMD_SAML_GROUPATTRIBUTE,
+ externalGroups: toArrayConfig(process.env.HMD_SAML_EXTERNALGROUPS, '|', []),
+ requiredGroups: toArrayConfig(process.env.HMD_SAML_REQUIREDGROUPS, '|', []),
+ attribute: {
+ id: process.env.HMD_SAML_ATTRIBUTE_ID,
+ username: process.env.HMD_SAML_ATTRIBUTE_USERNAME,
+ email: process.env.HMD_SAML_ATTRIBUTE_EMAIL
+ }
+ },
email: toBooleanConfig(process.env.HMD_EMAIL),
- allowemailregister: toBooleanConfig(process.env.HMD_ALLOW_EMAIL_REGISTER)
+ allowemailregister: toBooleanConfig(process.env.HMD_ALLOW_EMAIL_REGISTER),
+ allowpdfexport: toBooleanConfig(process.env.HMD_ALLOW_PDF_EXPORT)
}
diff --git a/lib/config/index.js b/lib/config/index.js
index bea5a6af..3ac3de53 100644
--- a/lib/config/index.js
+++ b/lib/config/index.js
@@ -1,3 +1,4 @@
+
'use strict'
const fs = require('fs')
@@ -89,7 +90,10 @@ config.isTwitterEnable = config.twitter.consumerKey && config.twitter.consumerSe
config.isEmailEnable = config.email
config.isGitHubEnable = config.github.clientID && config.github.clientSecret
config.isGitLabEnable = config.gitlab.clientID && config.gitlab.clientSecret
+config.isMattermostEnable = config.mattermost.clientID && config.mattermost.clientSecret
config.isLDAPEnable = config.ldap.url
+config.isSAMLEnable = config.saml.idpSsoUrl
+config.isPDFExportEnable = config.allowpdfexport
// generate correct path
config.sslcapath = path.join(appRootPath, config.sslcapath)
@@ -106,7 +110,7 @@ config.errorpath = path.join(appRootPath, config.errorpath)
config.prettypath = path.join(appRootPath, config.prettypath)
config.slidepath = path.join(appRootPath, config.slidepath)
-// maek config readonly
+// make config readonly
config = deepFreeze(config)
module.exports = config
diff --git a/lib/config/utils.js b/lib/config/utils.js
index 11bbd8cb..9ff2f96d 100644
--- a/lib/config/utils.js
+++ b/lib/config/utils.js
@@ -6,3 +6,10 @@ exports.toBooleanConfig = function toBooleanConfig (configValue) {
}
return configValue
}
+
+exports.toArrayConfig = function toArrayConfig (configValue, separator = ',', fallback) {
+ if (configValue && typeof configValue === 'string') {
+ return (configValue.split(separator).map(arrayItem => arrayItem.trim()))
+ }
+ return fallback
+}