Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
3b12c7854c | |||
f410f2b171 | |||
a952ee6197 | |||
bb7fa017ef |
@ -7,7 +7,7 @@ function create(myOpts) {
|
|||||||
// TODO pre-generate URL
|
// TODO pre-generate URL
|
||||||
|
|
||||||
// deliver existing session if it exists
|
// deliver existing session if it exists
|
||||||
var scope = opts && opts.scope || [];
|
var scope = opts && (opts.scope || opts.claims || myOpts.scope || myOpts.claims || []);
|
||||||
if (myOpts.session) {
|
if (myOpts.session) {
|
||||||
if (!scope.length || scope.every(function (scp) {
|
if (!scope.length || scope.every(function (scp) {
|
||||||
return -1 !== opts.myOpts.session.scope.indexOf(scp);
|
return -1 !== opts.myOpts.session.scope.indexOf(scp);
|
||||||
@ -23,6 +23,7 @@ function create(myOpts) {
|
|||||||
// maybe use inline instead?
|
// maybe use inline instead?
|
||||||
, windowType: 'popup'
|
, windowType: 'popup'
|
||||||
, scope: scope
|
, scope: scope
|
||||||
|
, debug: opts.debug || myOpts.debug
|
||||||
}).then(function (session) {
|
}).then(function (session) {
|
||||||
return session;
|
return session;
|
||||||
});
|
});
|
||||||
@ -57,6 +58,7 @@ window.navigator.auth = {
|
|||||||
var conf = {};
|
var conf = {};
|
||||||
var directives;
|
var directives;
|
||||||
var session;
|
var session;
|
||||||
|
var scope = opts && (opts.scope || opts.claims || []);
|
||||||
|
|
||||||
opts = opts || {};
|
opts = opts || {};
|
||||||
conf.client_uri = opts.client_uri || OAUTH3.clientUri(opts.location || window.location);
|
conf.client_uri = opts.client_uri || OAUTH3.clientUri(opts.location || window.location);
|
||||||
@ -73,12 +75,15 @@ window.navigator.auth = {
|
|||||||
var myOpts = {
|
var myOpts = {
|
||||||
directives: directives
|
directives: directives
|
||||||
, conf: conf
|
, conf: conf
|
||||||
|
, debug: opts.debug
|
||||||
|
, scope: scope
|
||||||
};
|
};
|
||||||
|
|
||||||
return OAUTH3.implicitGrant(directives, {
|
return OAUTH3.implicitGrant(directives, {
|
||||||
client_id: conf.client_uri
|
client_id: conf.client_uri
|
||||||
, client_uri: conf.client_uri
|
, client_uri: conf.client_uri
|
||||||
, windowType: 'background'
|
, windowType: 'background'
|
||||||
|
, scope: scope
|
||||||
}).then(function (_session) {
|
}).then(function (_session) {
|
||||||
session = _session;
|
session = _session;
|
||||||
myOpts.session = session;
|
myOpts.session = session;
|
||||||
|
@ -12,7 +12,8 @@
|
|||||||
}
|
}
|
||||||
, error: {
|
, error: {
|
||||||
parse: function (providerUri, params) {
|
parse: function (providerUri, params) {
|
||||||
var err = new Error(params.error_description || params.error.message || "Unknown error with provider '" + providerUri + "'");
|
var msg = decodeURIComponent(params.error_description || params.error.message || "Unknown error with provider '" + providerUri + "'");
|
||||||
|
var err = new Error(msg);
|
||||||
err.uri = params.error_uri || params.error.uri;
|
err.uri = params.error_uri || params.error.uri;
|
||||||
err.code = params.error.code || params.error;
|
err.code = params.error.code || params.error;
|
||||||
return err;
|
return err;
|
||||||
@ -306,6 +307,8 @@
|
|||||||
|
|
||||||
var params = {
|
var params = {
|
||||||
state: opts.state || OAUTH3.utils.randomState()
|
state: opts.state || OAUTH3.utils.randomState()
|
||||||
|
, client_uri: clientId
|
||||||
|
, client_id: clientId
|
||||||
, redirect_uri: clientId + (opts.client_callback_path || '/.well-known/oauth3/callback.html#/')
|
, redirect_uri: clientId + (opts.client_callback_path || '/.well-known/oauth3/callback.html#/')
|
||||||
, response_type: 'rpc'
|
, response_type: 'rpc'
|
||||||
, _method: 'GET'
|
, _method: 'GET'
|
||||||
@ -835,6 +838,9 @@
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (opts.debug) {
|
if (opts.debug) {
|
||||||
|
console.log('[DEBUG] [implicit_grant] url object:');
|
||||||
|
console.log(directives.issuer);
|
||||||
|
console.log(authReq);
|
||||||
window.alert("DEBUG MODE: Pausing so you can look at logs and whatnot :) Fire at will!");
|
window.alert("DEBUG MODE: Pausing so you can look at logs and whatnot :) Fire at will!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1012,6 +1018,10 @@
|
|||||||
var headers = preq.headers || {};
|
var headers = preq.headers || {};
|
||||||
var multipart;
|
var multipart;
|
||||||
|
|
||||||
|
if (!headers.Accept && !headers.accept) {
|
||||||
|
headers.Accept = 'application/json';
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
xhr = new XMLHttpRequest(_sys);
|
xhr = new XMLHttpRequest(_sys);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
@ -1023,7 +1033,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var data, err;
|
var data, err, resp;
|
||||||
if (xhr.status !== 200) {
|
if (xhr.status !== 200) {
|
||||||
err = new Error('bad status code: ' + xhr.status);
|
err = new Error('bad status code: ' + xhr.status);
|
||||||
}
|
}
|
||||||
@ -1046,12 +1056,19 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve({
|
resp = {
|
||||||
_request: xhr
|
_request: xhr
|
||||||
, headers: null // TODO
|
, headers: {}
|
||||||
, data: data
|
, data: data
|
||||||
, status: xhr.status
|
, status: xhr.status
|
||||||
|
};
|
||||||
|
(xhr.getAllResponseHeaders()||'').trim().split(/[\n\r]+/).forEach(function (line) {
|
||||||
|
var parts = line.split(': ');
|
||||||
|
var header = parts.shift();
|
||||||
|
var value = parts.join(': ');
|
||||||
|
resp.headers[header] = value;
|
||||||
});
|
});
|
||||||
|
resolve(resp);
|
||||||
};
|
};
|
||||||
xhr.ontimeout = function () {
|
xhr.ontimeout = function () {
|
||||||
var err = new Error('ETIMEDOUT');
|
var err = new Error('ETIMEDOUT');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user