add response interceptors for refreshTokens method

This commit is contained in:
Dzmitry_Tamashevich@epam.com
2020-11-23 22:27:36 +03:00
committed by Daniel Hutzel
parent 76cbf7f9ca
commit 938abb6387
53 changed files with 4702 additions and 4513 deletions

View File

@@ -2,28 +2,26 @@ const cds = require("@sap/cds");
const jwt = require("jsonwebtoken");
const { ACCESS_TOKEN_SECRET } = cds.env;
class MyUser extends cds.User {
constructor(attr, roles, id) {
super({ attr, _roles: [...roles, "authenticated-user"], id });
super({ attr, _roles: [...roles], id });
}
}
module.exports = (req, res, next) => {
const { authorization: authHeader } = req.headers;
const token = authHeader && authHeader.split(" ")[1];
if (token === null) {
return res.sendStatus(401);
}
try {
const decodedUser = jwt.verify(token, ACCESS_TOKEN_SECRET);
req.user = new MyUser(
{ ID: decodedUser.ID },
decodedUser.roles,
[decodedUser.roles, "authenticated-user"],
decodedUser.email
);
} catch (error) {
req.user = new MyUser({}, ["anonymous"], "");
req.user = new cds.User();
} finally {
next();
}