delete expired token cookies

This commit is contained in:
AJ ONeal 2017-12-05 22:18:03 +00:00
parent f2ad6f127c
commit 66850535d3
1 changed files with 19 additions and 1 deletions

View File

@ -22,6 +22,10 @@ function generateRescope(req, Models, decoded, fullPpid, ppid) {
if (!result || !result.sub || !decoded.iss) {
// XXX BUG XXX TODO swap this external ppid for an internal (and ask user to link with existing profile)
//req.oauth3.accountIdx = fullPpid;
console.log(decoded);
console.log(decoded.iss);
console.log(fullPpid);
console.log(ppid);
throw new Error("internal / external ID swapping not yet implemented. TODO: "
+ "No profile found with that credential. Would you like to create a new profile or link to an existing profile?");
}
@ -198,6 +202,14 @@ function verifyToken(token) {
try {
return jwt.verify(token, require('jwk-to-pem')(res.data), opts);
} catch (err) {
if ('TokenExpiredError' === err.code) {
return PromiseA.reject({
message: 'TokenExpiredError: jwt expired'
, code: 'E_TOKEN_EXPIRED'
, url: 'https://oauth3.org/docs/errors#E_TOKEN_EXPIRED'
});
}
return PromiseA.reject({
message: 'token verification failed'
, code: 'E_INVALID_TOKEN'
@ -220,7 +232,8 @@ function deepFreeze(obj) {
function cookieOauth3(Models, req, res, next) {
req.oauth3 = {};
var token = req.cookies.jwt;
var cookieName = 'jwt';
var token = req.cookies[cookieName];
req.oauth3.encodedToken = token;
req.oauth3.verifyAsync = function (jwt) {
@ -251,6 +264,11 @@ function cookieOauth3(Models, req, res, next) {
next();
return;
}
if ('E_TOKEN_EXPIRED' === err.code) {
res.clearCookie(cookieName);
next();
return;
}
console.error('[walnut] cookie lib/oauth3 error:');
console.error(err);
res.send(err);