diff options
Diffstat (limited to 'public/js/common.js')
-rw-r--r-- | public/js/common.js | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/public/js/common.js b/public/js/common.js index 37591d36..e6928e98 100644 --- a/public/js/common.js +++ b/public/js/common.js @@ -3,38 +3,62 @@ var domain = 'change this'; var checkAuth = false; var profile = null; var lastLoginState = getLoginState(); +var lastUserId = getUserId(); var loginStateChangeEvent = null; function resetCheckAuth() { checkAuth = false; } -function setLoginState(bool) { +function setLoginState(bool, id) { Cookies.set('loginstate', bool, { expires: 14 }); - if (loginStateChangeEvent && bool != lastLoginState) - loginStateChangeEvent(); + if (id) { + Cookies.set('userid', id, { + expires: 14 + }); + } else { + Cookies.remove('userid'); + } lastLoginState = bool; + lastUserId = id; + checkLoginStateChanged(); +} + +function checkLoginStateChanged() { + if (getLoginState() != lastLoginState || getUserId() != lastUserId) { + if(loginStateChangeEvent) + loginStateChangeEvent(); + return true; + } else { + return false; + } } function getLoginState() { return Cookies.get('loginstate') === "true"; } +function getUserId() { + return Cookies.get('userid'); +} + function clearLoginState() { Cookies.remove('loginstate'); } function checkIfAuth(yesCallback, noCallback) { var cookieLoginState = getLoginState(); + if (checkLoginStateChanged()) + checkAuth = false; if (!checkAuth || typeof cookieLoginState == 'undefined') { $.get('/me') .done(function (data) { if (data && data.status == 'ok') { profile = data; yesCallback(profile); - setLoginState(true); + setLoginState(true, data.id); } else { noCallback(); setLoginState(false); @@ -43,8 +67,10 @@ function checkIfAuth(yesCallback, noCallback) { .fail(function () { noCallback(); setLoginState(false); + }) + .always(function () { + checkAuth = true; }); - checkAuth = true; } else if (cookieLoginState) { yesCallback(profile); } else { |