tokens: async'ify
This commit is contained in:
@@ -25,7 +25,7 @@ exports = module.exports = {
|
||||
syncDnsRecords
|
||||
};
|
||||
|
||||
let assert = require('assert'),
|
||||
const assert = require('assert'),
|
||||
auditSource = require('../auditsource.js'),
|
||||
BoxError = require('../boxerror.js'),
|
||||
cloudron = require('../cloudron.js'),
|
||||
@@ -34,16 +34,16 @@ let assert = require('assert'),
|
||||
externalLdap = require('../externalldap.js'),
|
||||
HttpError = require('connect-lastmile').HttpError,
|
||||
HttpSuccess = require('connect-lastmile').HttpSuccess,
|
||||
safe = require('safetydance'),
|
||||
sysinfo = require('../sysinfo.js'),
|
||||
system = require('../system.js'),
|
||||
tokendb = require('../tokendb.js'),
|
||||
tokens = require('../tokens.js'),
|
||||
translation = require('../translation.js'),
|
||||
updater = require('../updater.js'),
|
||||
users = require('../users.js'),
|
||||
updateChecker = require('../updatechecker.js');
|
||||
|
||||
function login(req, res, next) {
|
||||
async function login(req, res, next) {
|
||||
assert.strictEqual(typeof req.user, 'object');
|
||||
|
||||
if ('type' in req.body && typeof req.body.type !== 'string') return next(new HttpError(400, 'type must be a string'));
|
||||
@@ -53,26 +53,27 @@ function login(req, res, next) {
|
||||
const userAgent = req.headers['user-agent'] || '';
|
||||
const auditSource = { authType: 'basic', ip: ip };
|
||||
|
||||
const error = tokens.validateTokenType(type);
|
||||
let error = tokens.validateTokenType(type);
|
||||
if (error) return next(new HttpError(400, error.message));
|
||||
|
||||
tokens.add(type, req.user.id, Date.now() + constants.DEFAULT_TOKEN_EXPIRATION_MSECS, {}, function (error, token) {
|
||||
if (error) return next(new HttpError(500, error));
|
||||
let token;
|
||||
[error, token] = await safe(tokens.add({ clientId: type, identifier: req.user.id, expires: Date.now() + constants.DEFAULT_TOKEN_EXPIRATION_MSECS }));
|
||||
if (error) return next(new HttpError(500, error));
|
||||
|
||||
eventlog.add(eventlog.ACTION_USER_LOGIN, auditSource, { userId: req.user.id, user: users.removePrivateFields(req.user) });
|
||||
eventlog.add(eventlog.ACTION_USER_LOGIN, auditSource, { userId: req.user.id, user: users.removePrivateFields(req.user) });
|
||||
|
||||
users.checkLoginLocation(req.user, ip, userAgent);
|
||||
users.checkLoginLocation(req.user, ip, userAgent);
|
||||
|
||||
next(new HttpSuccess(200, token));
|
||||
});
|
||||
next(new HttpSuccess(200, token));
|
||||
}
|
||||
|
||||
function logout(req, res) {
|
||||
async function logout(req, res) {
|
||||
assert.strictEqual(typeof req.access_token, 'string');
|
||||
|
||||
eventlog.add(eventlog.ACTION_USER_LOGOUT, auditSource.fromRequest(req), { userId: req.user.id, user: users.removePrivateFields(req.user) });
|
||||
|
||||
tokendb.delByAccessToken(req.access_token, function () { res.redirect('/login.html'); });
|
||||
await safe(tokens.delByAccessToken(req.access_token));
|
||||
res.redirect('/login.html');
|
||||
}
|
||||
|
||||
function passwordResetRequest(req, res, next) {
|
||||
@@ -99,15 +100,15 @@ function passwordReset(req, res, next) {
|
||||
if (!userObject.username) return next(new HttpError(409, 'No username set'));
|
||||
|
||||
// setPassword clears the resetToken
|
||||
users.setPassword(userObject, req.body.password, function (error) {
|
||||
users.setPassword(userObject, req.body.password, async function (error) {
|
||||
if (error && error.reason === BoxError.BAD_FIELD) return next(new HttpError(400, error.message));
|
||||
if (error) return next(BoxError.toHttpError(error));
|
||||
|
||||
tokens.add(tokens.ID_WEBADMIN, userObject.id, Date.now() + constants.DEFAULT_TOKEN_EXPIRATION_MSECS, {}, function (error, result) {
|
||||
if (error) return next(BoxError.toHttpError(error));
|
||||
let result;
|
||||
[error, result] = await safe(tokens.add({ clientId: tokens.ID_WEBADMIN, identifer: userObject.id, expires: Date.now() + constants.DEFAULT_TOKEN_EXPIRATION_MSECS }));
|
||||
if (error) return next(BoxError.toHttpError(error));
|
||||
|
||||
next(new HttpSuccess(202, { accessToken: result.accessToken }));
|
||||
});
|
||||
next(new HttpSuccess(202, { accessToken: result.accessToken }));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user