Files
cloud-cap-samples/chinook/srv/auth.js
2021-01-04 14:37:01 +01:00

29 lines
676 B
JavaScript

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