mirror of
https://github.com/openstf/stf
synced 2025-10-04 10:19:30 +02:00
69 lines
1.7 KiB
JavaScript
69 lines
1.7 KiB
JavaScript
/**
|
|
* Copyright © 2019 code initially contributed by Orange SA, authors: Denis Barbaron - Licensed under the Apache license 2.0
|
|
**/
|
|
|
|
const apiutil = require('./apiutil')
|
|
const dbapi = require('../db/api')
|
|
|
|
const lockutil = Object.create(null)
|
|
|
|
lockutil.unlockDevice = function(lock) {
|
|
if (lock.device) {
|
|
dbapi.unlockDevice(lock.device.serial)
|
|
}
|
|
}
|
|
|
|
lockutil.lockUser = function(email, res, lock) {
|
|
return dbapi.lockUser(email)
|
|
.then(function(stats) {
|
|
return apiutil.computeStats(res, stats, 'user', lock)
|
|
})
|
|
}
|
|
|
|
lockutil.unlockUser = function(lock) {
|
|
if (lock.user) {
|
|
dbapi.unlockUser(lock.user.email)
|
|
}
|
|
}
|
|
|
|
lockutil.lockGroupAndUser = function(req, res, lock) {
|
|
return lockutil.lockGroup(req, res, lock).then(function(lockingSuccessed) {
|
|
return lockingSuccessed ?
|
|
lockutil.lockUser(req.user.email, res, lock) :
|
|
false
|
|
})
|
|
}
|
|
|
|
lockutil.unlockGroupAndUser = function(lock) {
|
|
lockutil.unlockGroup(lock)
|
|
lockutil.unlockUser(lock)
|
|
}
|
|
|
|
lockutil.lockGroup = function(req, res, lock) {
|
|
const id = req.swagger.params.id.value
|
|
const email = req.user.email
|
|
|
|
return dbapi.lockGroupByOwner(email, id).then(function(stats) {
|
|
return apiutil.computeStats(res, stats, 'group', lock)
|
|
})
|
|
}
|
|
|
|
lockutil.unlockGroup = function(lock) {
|
|
if (lock.group) {
|
|
dbapi.unlockGroup(lock.group.id)
|
|
}
|
|
}
|
|
|
|
lockutil.unlockGroupAndDevice = function(lock) {
|
|
lockutil.unlockGroup(lock)
|
|
lockutil.unlockDevice(lock)
|
|
}
|
|
|
|
lockutil.lockGenericDevice = function(req, res, lock, lockDevice) {
|
|
return lockDevice(req.user.groups.subscribed, req.swagger.params.serial.value)
|
|
.then(function(stats) {
|
|
return apiutil.computeStats(res, stats, 'device', lock)
|
|
})
|
|
}
|
|
|
|
module.exports = lockutil
|