mirror of
https://github.com/DeviceFarmer/stf.git
synced 2026-04-17 23:53:25 +02:00
Add maintenance banner on UI (#797)
* fix bug on email separator Signed-off-by: Denis barbaron <denis.barbaron@orange.com> * allow group name change Signed-off-by: Denis barbaron <denis.barbaron@orange.com> * add maintenance banner on UI Signed-off-by: Denis barbaron <denis.barbaron@orange.com> * removes unnecessary comments Signed-off-by: Denis barbaron <denis.barbaron@orange.com> --------- Signed-off-by: Denis barbaron <denis.barbaron@orange.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* Copyright © 2019 code initially contributed by Orange SA, authors: Denis Barbaron - Licensed under the Apache license 2.0
|
||||
* Copyright © 2019-2024 code initially contributed by Orange SA, authors: Denis Barbaron - Licensed under the Apache license 2.0
|
||||
**/
|
||||
|
||||
const dbapi = require('../../../db/api')
|
||||
@@ -11,6 +11,7 @@ const wire = require('../../../wire')
|
||||
const wireutil = require('../../../wire/util')
|
||||
const userapi = require('./user')
|
||||
|
||||
|
||||
/* --------------------------------- PRIVATE FUNCTIONS --------------------------------------- */
|
||||
|
||||
function userApiWrapper(fn, req, res) {
|
||||
@@ -142,6 +143,92 @@ function getUserInfo(req, email) {
|
||||
})
|
||||
}
|
||||
|
||||
function updateUsersAlertMessage(req, res) {
|
||||
const lock = {}
|
||||
|
||||
return dbapi.lockUser(req.user.email).then(function(stats) {
|
||||
if (!stats.replaced) {
|
||||
return apiutil.lightComputeStats(res, stats)
|
||||
}
|
||||
lock.user = stats.changes[0].new_val
|
||||
|
||||
return dbapi.updateUsersAlertMessage(req.body).then(function(stats) {
|
||||
if (stats.unchanged) {
|
||||
dbapi.loadUser(req.user.email).then(function(user) {
|
||||
apiutil.respond(res, 200, 'Unchanged (users alert message)',
|
||||
{alertMessage: user.settings.alertMessage})
|
||||
})
|
||||
}
|
||||
else {
|
||||
apiutil.respond(res, 200, 'Updated (users alert message)',
|
||||
{alertMessage: stats.changes[0].new_val.settings.alertMessage})
|
||||
}
|
||||
})
|
||||
.catch(function(err) {
|
||||
apiutil.internalError(res, 'Failed to update users alert message: ', err.stack)
|
||||
})
|
||||
})
|
||||
.catch(function(err) {
|
||||
if (err !== 'busy') {
|
||||
throw err
|
||||
}
|
||||
})
|
||||
.finally(function() {
|
||||
lockutil.unlockUser(lock)
|
||||
})
|
||||
}
|
||||
|
||||
function getUsersAlertMessage(req, res) {
|
||||
const fields = req.swagger.params.fields.value
|
||||
|
||||
dbapi.getRootGroup().then(function(group) {
|
||||
return dbapi.loadUser(group.owner.email).then(function(user) {
|
||||
if (typeof user.settings.alertMessage === 'undefined') {
|
||||
const lock = {}
|
||||
|
||||
return dbapi.lockUser(req.user.email).then(function(stats) {
|
||||
if (!stats.replaced) {
|
||||
return apiutil.lightComputeStats(res, stats)
|
||||
}
|
||||
lock.user = stats.changes[0].new_val
|
||||
const alertMessage = {
|
||||
activation: 'False'
|
||||
, data: '*** this site is currently under maintenance, please wait ***'
|
||||
, level: 'Critical'
|
||||
}
|
||||
|
||||
return dbapi.updateUsersAlertMessage(alertMessage).then(function(stats) {
|
||||
if (!stats.errors) {
|
||||
return stats.changes[0].new_val.settings.alertMessage
|
||||
}
|
||||
throw new Error('Failed to initialize users alert message')
|
||||
})
|
||||
})
|
||||
.finally(function() {
|
||||
lockutil.unlockUser(lock)
|
||||
})
|
||||
}
|
||||
return user.settings.alertMessage
|
||||
})
|
||||
.then(function(alertMessage) {
|
||||
if (fields) {
|
||||
return _.pick(alertMessage, fields.split(','))
|
||||
}
|
||||
else {
|
||||
return alertMessage
|
||||
}
|
||||
})
|
||||
.then(function(alertMessage) {
|
||||
apiutil.respond(res, 200, 'Users Alert Message', {alertMessage: alertMessage})
|
||||
})
|
||||
})
|
||||
.catch(function(err) {
|
||||
if (err !== 'busy') {
|
||||
apiutil.internalError(res, 'Failed to get users alert message: ', err.stack)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function updateUserGroupsQuotas(req, res) {
|
||||
const email = req.swagger.params.email.value
|
||||
const duration =
|
||||
@@ -379,6 +466,8 @@ module.exports = {
|
||||
updateUserGroupsQuotas: updateUserGroupsQuotas
|
||||
, updateDefaultUserGroupsQuotas: updateDefaultUserGroupsQuotas
|
||||
, getUsers: getUsers
|
||||
, getUsersAlertMessage: getUsersAlertMessage
|
||||
, updateUsersAlertMessage: updateUsersAlertMessage
|
||||
, getUserByEmail: getUserByEmail
|
||||
, getUserInfo: getUserInfo
|
||||
, createUser: createUser
|
||||
|
||||
Reference in New Issue
Block a user