Files
Sulka HaroandGitHub 7fe8e32152 Refactor core auth (#6596)
* Auth resolve now supports async/await
* Read only tokens can be used for authentication and the UI shows privileges for these accounts correctly
* Failed attempt at authenticating an API_SECRET or token delays subsequent auth attempt by 5000 ms
2020-12-11 00:23:25 +02:00

38 lines
1.0 KiB
JavaScript

'use strict';
var consts = require('../constants');
function configure (ctx) {
var express = require('express'),
api = express.Router( );
api.get('/verifyauth', function(req, res) {
ctx.authorization.resolveWithRequest(req, function resolved (err, result) {
// this is used to see if req has api-secret equivalent authorization
var canRead = !err &&
ctx.authorization.checkMultiple('*:*:read', result.shiros);
var canWrite = !err &&
ctx.authorization.checkMultiple('*:*:write', result.shiros);
var isAdmin = !err &&
ctx.authorization.checkMultiple('*:*:admin', result.shiros);
var authorized = canRead && !result.defaults;
var response = {
canRead,
canWrite,
isAdmin,
message: authorized ? 'OK' : 'UNAUTHORIZED',
rolefound: result.subject ? 'FOUND' : 'NOTFOUND',
permissions: result.defaults ? 'DEFAULT' : 'ROLE'
};
res.sendJSONStatus(res, consts.HTTP_OK, response);
});
});
return api;
}
module.exports = configure;