handle multiple logouts
This commit is contained in:
parent
0c69462255
commit
1ccf0dd71c
|
@ -126,8 +126,14 @@ app.controller('loginCtrl', [
|
||||||
};
|
};
|
||||||
|
|
||||||
vm.signOut = function () {
|
vm.signOut = function () {
|
||||||
Auth.signOut();
|
// TODO the sign-out url for each account should be fixed.
|
||||||
$location.path('/splash-page');
|
return Auth.signOut().then(function () {
|
||||||
|
if (!Auth.hasSession()) {
|
||||||
|
$location.path('/splash-page');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
window.alert("You are still logged in with other accounts.");
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
|
|
|
@ -30,7 +30,7 @@ app.factory('Auth', [
|
||||||
|
|
||||||
localStorage.setItem(dapName, JSON.stringify(session));
|
localStorage.setItem(dapName, JSON.stringify(session));
|
||||||
localStorage.setItem(dapSession, dapName);
|
localStorage.setItem(dapSession, dapName);
|
||||||
obj[dapName] = true;
|
obj[dapName] = Date.now();
|
||||||
localStorage.setItem(dapSessions, JSON.stringify(obj));
|
localStorage.setItem(dapSessions, JSON.stringify(obj));
|
||||||
}
|
}
|
||||||
, restore: function () {
|
, restore: function () {
|
||||||
|
@ -54,8 +54,27 @@ app.factory('Auth', [
|
||||||
return Auth.session;
|
return Auth.session;
|
||||||
}
|
}
|
||||||
, signOut: function () {
|
, signOut: function () {
|
||||||
localStorage.clear();
|
var session = Auth.session;
|
||||||
}
|
var dapName = 'dap-' + session.subject + '|' + session.issuer;
|
||||||
|
|
||||||
|
// TODO logout url should be created upon login and remain fixed throughout the duration of the session (or on session restoration)
|
||||||
|
return Auth.oauth3.logout().then(function () {
|
||||||
|
var obj = JSON.parse(localStorage.getItem(dapSessions) || '{}');
|
||||||
|
delete obj[dapName];
|
||||||
|
var newDapName = Object.keys(obj).sort(function (a, b) { return obj[a] - obj[b]; })[0];
|
||||||
|
|
||||||
|
localStorage.setItem(dapSession, newDapName);
|
||||||
|
localStorage.setItem(dapSessions, JSON.stringify(obj));
|
||||||
|
localStorage.removeItem(dapName);
|
||||||
|
|
||||||
|
if (!newDapName) {
|
||||||
|
localStorage.removeItem(dapSession);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Auth.restore();
|
||||||
|
});
|
||||||
|
// localStorage.clear();
|
||||||
|
}
|
||||||
, sessions: []
|
, sessions: []
|
||||||
, session: null
|
, session: null
|
||||||
, oauth3: null
|
, oauth3: null
|
||||||
|
|
Loading…
Reference in New Issue