Skip to content
This repository has been archived by the owner on Apr 23, 2019. It is now read-only.

Remove stateful app.settings.accessToken #99

Closed
wants to merge 6 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/hooks/populate-access-token.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ module.exports = function populateAccessToken () {
return Promise.reject(new Error(`The 'populateAccessToken' hook should only be used as a 'before' hook.`));
}

Object.assign(hook.params, { accessToken: app.get('accessToken') });
Object.assign(hook.params, { accessToken: app.get('storage').getItem(app.passport.options.storageKey) });
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to work asynchronously (for React Natives AsyncStorage):

return Promise.resolve(app.get('storage').getItem(app.passport.options.storageKey)).then(accessToken => {
  Object.assign(hook.params, { accessToken });
  return hook;
});


return Promise.resolve(hook);
};
Expand Down
28 changes: 8 additions & 20 deletions lib/passport.js
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,6 @@ module.exports = class Passport {
logout () {
const app = this.app;

app.set('accessToken', null);
this.clearCookie(this.options.cookie);

// remove the accessToken from localStorage
Expand All @@ -241,34 +240,23 @@ module.exports = class Passport {
const accessToken = (data && data.accessToken) ? data.accessToken : data;

if (accessToken) {
this.app.set('accessToken', accessToken);
this.app.get('storage').setItem(this.options.storageKey, accessToken);
}

return Promise.resolve(data);
}

getJWT () {
const app = this.app;
return new Promise((resolve, reject) => {
const accessToken = app.get('accessToken');

if (accessToken) {
return resolve(accessToken);
}

return Promise.resolve(this.storage.getItem(this.options.storageKey))
.then(jwt => {
let token = jwt || this.getCookie(this.options.cookie);
return Promise.resolve(this.storage.getItem(this.options.storageKey))
.then(jwt => {
let token = jwt || this.getCookie(this.options.cookie);

if (token && token !== 'null' && !this.payloadIsValid(decode(token))) {
token = undefined;
}
if (token && token !== 'null' && !this.payloadIsValid(decode(token))) {
token = undefined;
}

return resolve(token);
})
.catch(reject);
});
return token;
});
}

// Pass a jwt token, get back a payload if it's valid.
Expand Down