1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-04 10:19:30 +02:00
OpenSTF/lib/util/lockutil.js
2019-06-12 10:29:07 +02:00

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