added hook to create new session with stored key
This commit is contained in:
parent
e42079d856
commit
39b8e19bae
|
@ -283,7 +283,7 @@ OAUTH3.urls.publishKey = function (directive, opts) {
|
|||
return {
|
||||
method: jwkDir.method || opts.method || 'POST'
|
||||
, url: url
|
||||
, data: opts.public_key
|
||||
, data: opts.public_key || opts.publicKey
|
||||
, session: opts.session
|
||||
};
|
||||
};
|
||||
|
@ -605,6 +605,48 @@ OAUTH3.hooks.keyPairs = {
|
|||
return OAUTH3.PromiseA.resolve(OAUTH3._hooks.keyPairs.clear());
|
||||
}
|
||||
};
|
||||
OAUTH3.hooks.session.get = function (providerUri, id) {
|
||||
OAUTH3.hooks._checkStorage('sessions', 'get');
|
||||
var sessProm = OAUTH3.PromiseA.resolve(OAUTH3._hooks.sessions.get(providerUri, id));
|
||||
if (providerUri !== OAUTH3.clientUri(window.location)) {
|
||||
return sessProm;
|
||||
}
|
||||
|
||||
return sessProm.then(function (session) {
|
||||
if (session && OAUTH3.jwt.freshness(session.token) === 'fresh') {
|
||||
return session;
|
||||
}
|
||||
|
||||
return OAUTH3.hooks.keyPairs.all().then(function (keyPairs) {
|
||||
var pair;
|
||||
if (id) {
|
||||
pair = keyPairs[id];
|
||||
} else if (Object.keys(keyPairs).length === 1) {
|
||||
id = Object.keys(keyPairs)[0];
|
||||
pair = keyPairs[id];
|
||||
} else if (Object.keys(keyPairs).length > 1) {
|
||||
console.error("too many users, don't know which key to use");
|
||||
}
|
||||
if (!pair) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var payload = {
|
||||
iss: providerUri
|
||||
, aud: providerUri
|
||||
, azp: providerUri
|
||||
, sub: pair.sub || id
|
||||
, scope: ''
|
||||
};
|
||||
return OAUTH3.jwt.sign(payload, pair.privateKey).then(function (token) {
|
||||
return OAUTH3.hooks.session.refresh(
|
||||
{ provider_uri: providerUri, client_uri: providerUri || providerUri }
|
||||
, { access_token: token }
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
OAUTH3._defaultStorage.grants = {
|
||||
prefix: 'grants-'
|
||||
|
|
Loading…
Reference in New Issue