diff --git a/Client/src/Features/Settings/settingsSlice.js b/Client/src/Features/Settings/settingsSlice.js index 283a8502d..f81404589 100644 --- a/Client/src/Features/Settings/settingsSlice.js +++ b/Client/src/Features/Settings/settingsSlice.js @@ -42,6 +42,10 @@ export const updateAppSettings = createAsyncThunk( dbConnectionString: settings.dbConnectionString, redisHost: settings.redisHost, redisPort: settings.redisPort, + redisUser: settings.redisUser, + redisPassword: settings.redisPassword, + redisDb: settings.redisDb, + redisPrefix: settings.redisPrefix, jwtTTL: settings.jwtTTL, pagespeedApiKey: settings.pagespeedApiKey, systemEmailHost: settings.systemEmailHost, diff --git a/Server/db/models/AppSettings.js b/Server/db/models/AppSettings.js index c4faa0881..8ebd468d9 100644 --- a/Server/db/models/AppSettings.js +++ b/Server/db/models/AppSettings.js @@ -46,6 +46,20 @@ const AppSettingsSchema = mongoose.Schema( type: Number, default: "6379", }, + redisUser: { + type: String, + }, + redisPassword: { + type: String, + }, + redisDb: { + type: Number, + default: 0 + }, + redisPrefix: { + type: String, + default: "", + }, jwtTTL: { type: String, required: true, diff --git a/Server/index.js b/Server/index.js index b1f3f914b..a04b9baed 100644 --- a/Server/index.js +++ b/Server/index.js @@ -108,10 +108,21 @@ const shutdown = async () => { const settings = ServiceRegistry.get(SettingsService.SERVICE_NAME).getSettings() || {}; - const { redisHost = "127.0.0.1", redisPort = 6379 } = settings; + const { + redisHost = "127.0.0.1", + redisPort = 6379, + redisUser = null, + redisPassword = null, + redisDb = 0, + redisPrefix = "" + } = settings; const redis = new IORedis({ host: redisHost, port: redisPort, + username: redisUser, + password: redisPassword, + db: redisDb, + keyPrefix: redisPrefix, }); logger.info({ message: "Flushing Redis" }); await redis.flushall(); diff --git a/Server/service/jobQueue.js b/Server/service/jobQueue.js index be36383d2..f34f1a045 100644 --- a/Server/service/jobQueue.js +++ b/Server/service/jobQueue.js @@ -28,10 +28,21 @@ class NewJobQueue { Worker ) { const settings = settingsService.getSettings() || {}; - const { redisHost = "127.0.0.1", redisPort = 6379 } = settings; + const { + redisHost = "127.0.0.1", + redisPort = 6379, + redisUser = null, + redisPassword = null, + redisDb = 0, + redisPrefix = "" + } = settings; const connection = { host: redisHost, port: redisPort, + username: redisUser, + password: redisPassword, + db: redisDb, + keyPrefix: redisPrefix, }; this.queues = {}; diff --git a/Server/service/settingsService.js b/Server/service/settingsService.js index 24931f6ce..4f804c586 100644 --- a/Server/service/settingsService.js +++ b/Server/service/settingsService.js @@ -11,6 +11,10 @@ const envConfig = { dbConnectionString: process.env.DB_CONNECTION_STRING, redisHost: process.env.REDIS_HOST, redisPort: process.env.REDIS_PORT, + redisUser: process.env.REDIS_USER, + redisPassword: process.env.REDIS_PASSWORD, + redisDb: process.env.REDIS_DB, + redisPrefix: process.env.REDIS_PREFIX, jwtTTL: process.env.TOKEN_TTL, refreshTokenTTL: process.env.REFRESH_TOKEN_TTL, pagespeedApiKey: process.env.PAGESPEED_API_KEY, diff --git a/Server/validation/joi.js b/Server/validation/joi.js index b60022fc5..65056f557 100644 --- a/Server/validation/joi.js +++ b/Server/validation/joi.js @@ -408,6 +408,10 @@ const updateAppSettingsBodyValidation = joi.object({ dbConnectionString: joi.string().allow(""), redisHost: joi.string().allow(""), redisPort: joi.number().allow(null, ""), + redisUser: joi.string().allow(null, ""), + redisPassword: joi.string().allow(null, ""), + redisDb: joi.number().allow(null, 0), + redisPrefix: joi.string().allow(""), jwtTTL: joi.string().allow(""), pagespeedApiKey: joi.string().allow(""), systemEmailHost: joi.string().allow(""),