Skip to content

Commit cfb02df

Browse files
committed
get token from either auth header or cookie
1 parent 7fdf86e commit cfb02df

2 files changed

Lines changed: 5 additions & 2 deletions

File tree

complete-application/services/hasRole.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ const jose = require('jose');
22

33
function hasRole(roles) {
44
return (req, res, next) => {
5-
const decodedToken = jose.decodeJwt(req.cookies['app.at']);
5+
const decodedToken = jose.decodeJwt(req.verifiedToken);
66
if (roles.some((role) => decodedToken.roles.includes(role))) return next();
77
res.status(403);
88
res.send({ error: `You do not have a role with permissions to do this.` });

complete-application/services/verifyJWT.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ const jwksClient = jose.createRemoteJWKSet(
66
);
77

88
const verifyJWT = async (req, res, next) => {
9-
const access_token = req.cookies['app.at'];
9+
const authHeader = req.headers.authorization;
10+
const tokenFromHeader = authHeader ? authHeader.split(' ')[1] : null;
11+
const access_token = req.cookies['app.at'] || tokenFromHeader;
1012
if (!access_token) {
1113
res.status(401);
1214
res.send({ error: 'Missing token cookie and Authorization header' });
@@ -16,6 +18,7 @@ const verifyJWT = async (req, res, next) => {
1618
issuer: process.env.BASE_URL,
1719
audience: process.env.CLIENT_ID,
1820
});
21+
req.verifiedToken = access_token;
1922
next();
2023
} catch (e) {
2124
if (e instanceof jose.errors.JOSEError) {

0 commit comments

Comments
 (0)