Files
cloudron-box/src/accesscontrol.js
T
Girish Ramakrishnan 176388111c tokens: add lastUsedTime
2021-03-16 16:04:17 -07:00

35 lines
1.2 KiB
JavaScript

'use strict';
exports = module.exports = {
verifyToken
};
var assert = require('assert'),
BoxError = require('./boxerror.js'),
debug = require('debug')('box:accesscontrol'),
tokens = require('./tokens.js'),
users = require('./users.js');
const NOOP_CALLBACK = function (error) { if (error) debug(error); };
function verifyToken(accessToken, callback) {
assert.strictEqual(typeof accessToken, 'string');
assert.strictEqual(typeof callback, 'function');
tokens.getByAccessToken(accessToken, function (error, token) {
if (error && error.reason === BoxError.NOT_FOUND) return callback(new BoxError(BoxError.INVALID_CREDENTIALS));
if (error) return callback(error);
users.get(token.identifier, function (error, user) {
if (error && error.reason === BoxError.NOT_FOUND) return callback(new BoxError(BoxError.INVALID_CREDENTIALS));
if (error) return callback(error);
if (!user.active) return callback(new BoxError(BoxError.INVALID_CREDENTIALS));
tokens.update(token.id, { lastUsedTime: new Date() }, NOOP_CALLBACK);
callback(null, user);
});
});
}