Explorar el Código

fix: add new props to existing auth strategies (#6250)

Charlotte County Public Schools hace 2 años
padre
commit
5acc7e752e
Se han modificado 1 ficheros con 9 adiciones y 0 borrados
  1. 9 0
      server/models/authentication.js

+ 9 - 0
server/models/authentication.js

@@ -92,6 +92,7 @@ module.exports = class Authentication extends Model {
       }
 
       for (const strategy of dbStrategies) {
+        let newProps = false
         const strategyDef = _.find(WIKI.data.authentication, ['key', strategy.strategyKey])
         if (!strategyDef) {
           await WIKI.models.authentication.query().delete().where('key', strategy.key)
@@ -101,6 +102,8 @@ module.exports = class Authentication extends Model {
         strategy.config = _.transform(strategyDef.props, (result, value, key) => {
           if (!_.has(result, key)) {
             _.set(result, key, value.default)
+            // we have some new properties added to an existing auth strategy to write to the database
+            newProps = true
           }
           return result
         }, strategy.config)
@@ -111,6 +114,12 @@ module.exports = class Authentication extends Model {
             displayName: strategyDef.title
           }).where('key', strategy.key)
         }
+        // write existing auth model to database with new properties and defaults
+        if (newProps) {
+          await WIKI.models.authentication.query().patch({
+            config: strategy.config
+          }).where('key', strategy.key)
+        }
       }
 
       WIKI.logger.info(`Loaded ${WIKI.data.authentication.length} authentication strategies: [ OK ]`)