create account if none exists
This commit is contained in:
parent
84612050c7
commit
23d65ec4da
23
oauth3.js
23
oauth3.js
|
@ -108,6 +108,8 @@
|
|||
|
||||
console.info('[oauth3.hooks.refreshSession] oldSession', JSON.parse(JSON.stringify(oldSession)));
|
||||
console.info('[oauth3.hooks.refreshSession] newSession', newSession);
|
||||
// shim for account create which does not return new refresh_token
|
||||
newSession.refresh_token = newSession.refresh_token || oldSession.refresh_token;
|
||||
Object.keys(oldSession).forEach(function (key) {
|
||||
oldSession[key] = undefined;
|
||||
});
|
||||
|
@ -122,13 +124,24 @@
|
|||
// info about the newly-discovered token
|
||||
oldSession.token = oldSession.meta = core.jwt.decode(oldSession.access_token).payload;
|
||||
|
||||
oldSession.token.sub = oldSession.token.sub || oldSession.token.acx.id;
|
||||
oldSession.token.sub = oldSession.token.sub
|
||||
|| (oldSession.token.acx && oldSession.token.acx.id)
|
||||
|| (oldSession.token.axs && oldSession.token.axs.length && oldSession.token.axs[0].appScopedId)
|
||||
;
|
||||
oldSession.token.client_uri = clientUri;
|
||||
oldSession.token.provider_uri = providerUri;
|
||||
|
||||
if (oldSession.refresh_token || oldSession.refreshToken) {
|
||||
oldSession.refresh = core.jwt.decode(oldSession.refresh_token || oldSession.refreshToken).payload;
|
||||
oldSession.refresh.sub = oldSession.refresh.sub || oldSession.refresh.acx.id;
|
||||
if (!oldSession.token.sub) {
|
||||
// TODO this is broken hard
|
||||
console.warn('TODO implementation for OAUTH3.hooks.accounts.create (GUI, CLI, or API)');
|
||||
}
|
||||
|
||||
if (oldSession.refresh_token) {
|
||||
oldSession.refresh = core.jwt.decode(oldSession.refresh_token).payload;
|
||||
oldSession.refresh.sub = oldSession.refresh.sub
|
||||
|| (oldSession.refresh.acx && oldSession.refresh.acx.id)
|
||||
|| (oldSession.refresh.axs && oldSession.refresh.axs.length && oldSession.refresh.axs[0].appScopedId)
|
||||
;
|
||||
oldSession.refresh.provider_uri = providerUri;
|
||||
}
|
||||
|
||||
|
@ -205,7 +218,7 @@
|
|||
// TODO check session.token.aud against preq.url to make sure they match
|
||||
console.warn("[security] session audience checking has not been implemented yet (it's up to you to check)");
|
||||
preq.headers = preq.headers || {};
|
||||
preq.headers.Authorization = 'Bearer ' + (preq.session.access_token || preq.session.accessToken);
|
||||
preq.headers.Authorization = 'Bearer ' + preq.session.access_token;
|
||||
}
|
||||
|
||||
if (!oauth3._lintRequest) {
|
||||
|
|
Loading…
Reference in New Issue