Files
cloudron-box/src/accesscontrol.js

27 lines
828 B
JavaScript
Raw Normal View History

'use strict';
exports = module.exports = {
2021-03-15 12:47:57 -07:00
verifyToken
2018-06-18 14:21:54 -07:00
};
2021-06-04 09:28:40 -07:00
const assert = require('assert'),
2019-10-22 21:16:00 -07:00
BoxError = require('./boxerror.js'),
2021-06-04 09:28:40 -07:00
safe = require('safetydance'),
2021-03-15 12:47:57 -07:00
tokens = require('./tokens.js'),
2021-07-15 09:50:11 -07:00
users = require('./users.js');
2021-03-15 12:47:57 -07:00
2021-06-04 09:28:40 -07:00
async function verifyToken(accessToken) {
assert.strictEqual(typeof accessToken, 'string');
2021-06-04 09:28:40 -07:00
const token = await tokens.getByAccessToken(accessToken);
2021-06-05 21:26:43 -07:00
if (!token) throw new BoxError(BoxError.INVALID_CREDENTIALS, 'No such token');
2021-07-15 09:50:11 -07:00
const user = await users.get(token.identifier);
if (!user) throw new BoxError(BoxError.INVALID_CREDENTIALS, 'User not found');
2021-06-05 21:26:43 -07:00
if (!user.active) throw new BoxError(BoxError.INVALID_CREDENTIALS, 'User not active');
2018-08-02 19:07:33 -07:00
2021-06-04 09:28:40 -07:00
await safe(tokens.update(token.id, { lastUsedTime: new Date() })); // ignore any error
2021-03-15 12:47:57 -07:00
2021-06-04 09:28:40 -07:00
return user;
2018-06-18 14:21:54 -07:00
}