From f7f8c901f4bc39c3ed0a2bdfe1cbaa1ee6957999 Mon Sep 17 00:00:00 2001 From: Wu Cheng-Han Date: Mon, 1 Jun 2015 18:04:25 +0800 Subject: Marked as 0.2.9 --- public/js/common.js | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) (limited to 'public/js/common.js') 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 { -- cgit v1.2.3