/
customClaims.js
31 lines (30 loc) · 977 Bytes
/
customClaims.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
/**
* DEFINE YOUR OWN CLAIM MAPPING HERE
* TO BE PUT IN AAC CONFIG OF GRAFANA CLIENT APP
**/
function claimMapping(claims) {
// extract roles
var path = 'components/';
var roles = claims.roles.filter(function(r) {
return r.indexOf(path) == 0;
})
.map(function(r) {
var subrole = r.substring(path.length);
var a = subrole.split(':');
return {
org: a[0].replace(/\//g, '_').replace(/\./, '_'),
role: a[1]
}
})
.reduce(function(prev, curr) {
if(curr.role === 'ROLE_ADMIN')
prev[curr.org] = 'Admin';
else if(curr.role === 'ROLE_EDITOR' && prev[curr.org] !== 'Admin')
prev[curr.org] = 'Editor';
else if(!prev[curr.org])
prev[curr.org] = 'Viewer';
return prev;
}, {});
claims['grafana/roles'] = roles;
return claims;
}