migrate permissions and admin flag to user.role

This commit is contained in:
Girish Ramakrishnan
2020-02-21 12:17:06 -08:00
parent a8f1b0241e
commit 0e156b9376
27 changed files with 245 additions and 254 deletions

View File

@@ -1,12 +1,7 @@
'use strict';
exports = module.exports = {
PERMISSION_ADMIN: 'admin', // not a real permission, but a role
PERMISSION_MANAGE_USERS: 'manage_users',
verifyToken: verifyToken,
hasPermission: hasPermission,
validatePermissions: validatePermissions
verifyToken: verifyToken
};
var assert = require('assert'),
@@ -14,28 +9,6 @@ var assert = require('assert'),
tokendb = require('./tokendb.js'),
users = require('./users.js');
function hasPermission(user, requiredPermission) {
assert.strictEqual(typeof user, 'object');
assert.strictEqual(typeof requiredPermission, 'string');
if (user.admin) return null;
if (user.permissions && user.permissions.includes(requiredPermission)) return null;
return new BoxError(BoxError.ACCESS_DENIED, 'Not permitted');
}
function validatePermissions(permissions) {
assert(permissions === null || Array.isArray(permissions));
if (permissions === null || permissions.length === 0) return null;
if (permissions.length === 1 && permissions[0] === exports.PERMISSION_MANAGE_USERS) return null;
// here for completeness
if (permissions.includes(exports.PERMISSION_ADMIN)) return new BoxError(BoxError.BAD_FIELD, 'admin is not a permission');
return new BoxError(BoxError.BAD_FIELD, 'Invalid permissions');
}
function verifyToken(accessToken, callback) {
assert.strictEqual(typeof accessToken, 'string');
assert.strictEqual(typeof callback, 'function');