Reordering available tenancies
Reordering available tenancies
async function customMiddleware(req, res, next) {
const rorRequest = req.rorRequest;
const metadata =
req.rorRequest && req.rorRequest.getIdentitySession() && req.rorRequest.getIdentitySession().metadata;
const defaultGroup = 'infosec';
const X_FORWARDED_USER = 'x-forwarded-user';
if (rorRequest.getPath() === '/login' && rorRequest.getMethod() === 'post') {
// For the login form
if (rorRequest.getBody().username === 'admin') {
rorRequest.setQuery('defaultGroup', defaultGroup);
}
// For the SAML/OIDC login
const token = rorRequest.getBody().conn_svc_transient_jwt;
if (token) {
const parsedJWT = JSON.parse(Buffer.from(token.split('.')[1], 'base64').toString());
if (parsedJWT.user === 'admin') {
rorRequest.setQuery('defaultGroup', defaultGroup);
}
}
}
// For the Proxy authorization
if (!metadata && req.headers[X_FORWARDED_USER]) {
if (req.headers[X_FORWARDED_USER] === 'admin') {
rorRequest.setQuery('defaultGroup', defaultGroup);
}
}
if (metadata && rorRequest.getPath() === '/pkp/api/info') {
const availableGroups = metadata.availableGroups;
if (availableGroups.some(availableGroup => availableGroup === defaultGroup)) {
const index = availableGroups.indexOf(defaultGroup);
const groupAvailable = index !== -1;
if (groupAvailable) {
availableGroups.splice(index, 1);
availableGroups.unshift(defaultGroup);
}
rorRequest.enrichIdentitySessionMetadata({ availableGroups });
}
}
return next();
}PreviousReject machine-to-machine traffic using custom metadata ACL rulesNextAvailable rorRequest API
Last updated