forked from nightscout/cgm-remote-monitor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathverifyauth.js
37 lines (29 loc) · 1.04 KB
/
verifyauth.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
'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;