Refactored frontend authentication system

This commit is contained in:
Marcin Kurczewski
2014-09-05 13:50:19 +02:00
parent 7a8badd2ed
commit eadd649ad0
6 changed files with 46 additions and 17 deletions

View File

@ -16,7 +16,7 @@ App.Auth = function(jQuery, util, api, appState, promise) {
reject(response);
});
});
};
}
function loginFromToken(token) {
return promise.make(function(resolve, reject) {
@ -28,7 +28,7 @@ App.Auth = function(jQuery, util, api, appState, promise) {
reject(response);
});
});
};
}
function loginAnonymous() {
return promise.make(function(resolve, reject) {
@ -40,18 +40,18 @@ App.Auth = function(jQuery, util, api, appState, promise) {
reject(response);
});
});
};
}
function logout() {
return promise.make(function(resolve, reject) {
jQuery.removeCookie('auth');
return loginAnonymous().then(resolve).fail(reject);
});
};
}
function tryLoginFromCookie() {
return promise.make(function(resolve, reject) {
if (appState.get('loggedIn')) {
if (isLoggedIn()) {
resolve();
return;
}
@ -70,7 +70,7 @@ App.Auth = function(jQuery, util, api, appState, promise) {
reject();
});
});
};
}
function updateAppState(response) {
appState.set('privileges', response.json.privileges || []);
@ -79,12 +79,37 @@ App.Auth = function(jQuery, util, api, appState, promise) {
appState.set('loggedIn', response.json.user && !!response.json.user.id);
}
function isLoggedIn() {
return appState.get('loggedIn');
}
function getCurrentUser() {
return appState.get('loggedInUser');
}
function getCurrentPrivileges() {
return appState.get('privileges');
}
function hasPrivilege(privilege) {
return _.contains(getCurrentPrivileges(), privilege);
}
function startObservingLoginChanges(listenerName, callback) {
appState.startObserving('loggedIn', listenerName, callback);
}
return {
loginFromCredentials: loginFromCredentials,
loginFromToken: loginFromToken,
loginAnonymous: loginAnonymous,
tryLoginFromCookie: tryLoginFromCookie,
logout: logout,
isLoggedIn: isLoggedIn,
getCurrentUser: getCurrentUser,
getCurrentPrivileges: getCurrentPrivileges,
hasPrivilege: hasPrivilege,
startObservingLoginChanges: startObservingLoginChanges,
};
};