mirror of
https://github.com/rr-/szurubooru.git
synced 2025-07-17 08:26:24 +00:00
Refactored privilege system
This commit is contained in:
@ -2,6 +2,13 @@ var App = App || {};
|
||||
|
||||
App.Auth = function(jQuery, util, api, appState, promise) {
|
||||
|
||||
var privileges = {
|
||||
register: 'register',
|
||||
listUsers: 'listUsers',
|
||||
deleteOwnAccount: 'deleteOwnAccount',
|
||||
deleteAllAccounts: 'deleteAllAccounts',
|
||||
};
|
||||
|
||||
function loginFromCredentials(userName, password, remember) {
|
||||
return promise.make(function(resolve, reject) {
|
||||
promise.wait(api.post('/login', {userName: userName, password: password}))
|
||||
@ -79,8 +86,14 @@ 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 isLoggedIn(userName) {
|
||||
if (!appState.get('loggedIn'))
|
||||
return false;
|
||||
if (typeof(userName) != 'undefined') {
|
||||
if (getCurrentUser().name != userName)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function getCurrentUser() {
|
||||
@ -105,11 +118,14 @@ App.Auth = function(jQuery, util, api, appState, promise) {
|
||||
loginAnonymous: loginAnonymous,
|
||||
tryLoginFromCookie: tryLoginFromCookie,
|
||||
logout: logout,
|
||||
|
||||
startObservingLoginChanges: startObservingLoginChanges,
|
||||
isLoggedIn: isLoggedIn,
|
||||
getCurrentUser: getCurrentUser,
|
||||
getCurrentPrivileges: getCurrentPrivileges,
|
||||
hasPrivilege: hasPrivilege,
|
||||
startObservingLoginChanges: startObservingLoginChanges,
|
||||
|
||||
privileges: privileges,
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -33,7 +33,7 @@ App.Presenters.TopNavigationPresenter = function(
|
||||
$el.html(template({
|
||||
loggedIn: auth.isLoggedIn(),
|
||||
user: auth.getCurrentUser(),
|
||||
canListUsers: auth.hasPrivilege('listUsers')
|
||||
canListUsers: auth.hasPrivilege(auth.privileges.listUsers)
|
||||
}));
|
||||
$el.find('li.' + selectedElement).addClass('active');
|
||||
};
|
||||
|
@ -5,6 +5,7 @@ App.Presenters.UserListPresenter = function(
|
||||
jQuery,
|
||||
util,
|
||||
promise,
|
||||
auth,
|
||||
router,
|
||||
pagedCollectionPresenter,
|
||||
topNavigationPresenter,
|
||||
|
@ -21,7 +21,7 @@ App.Presenters.UserPresenter = function(
|
||||
|
||||
function init(args) {
|
||||
userName = args.userName;
|
||||
topNavigationPresenter.select(auth.isLoggedIn() && auth.getCurrentUser().name == userName ? 'my-account' : 'users');
|
||||
topNavigationPresenter.select(auth.isLoggedIn(userName) ? 'my-account' : 'users');
|
||||
|
||||
promise.waitAll(
|
||||
util.promiseTemplate('user'),
|
||||
@ -51,8 +51,8 @@ App.Presenters.UserPresenter = function(
|
||||
function render() {
|
||||
var context = {
|
||||
user: user,
|
||||
canDeleteAccount: auth.hasPrivilege('deleteAccounts') ||
|
||||
(auth.hasPrivilege('deleteOwnAccount') && auth.getCurrentUser().name == userName),
|
||||
canDeleteAccount: auth.hasPrivilege(auth.privileges.deleteAllAccounts) ||
|
||||
(auth.isLoggedIn(userName) && auth.hasPrivilege(auth.privileges.deleteOwnAccount)),
|
||||
};
|
||||
$el.html(template(context));
|
||||
$el.find('.browsing-settings').html(browsingSettingsTemplate(context));
|
||||
|
Reference in New Issue
Block a user