mirror of
https://github.com/bckelley/cgm-remote-monitor.git
synced 2026-08-24 03:14:12 -05:00
* 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
38 lines
1.0 KiB
JavaScript
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;
|