diff --git a/data/config.ini b/data/config.ini index 7eaf1174..7aafbecd 100644 --- a/data/config.ini +++ b/data/config.ini @@ -7,6 +7,13 @@ name = booru-dev secret = change minPasswordLength = 5 +[security.privileges] +anonymous = register, viewUser +regularUser = listUsers, viewUser +powerUser = listUsers, viewUser +moderator = listUsers, viewUser +administrator = listUsers, viewUser + [users] minUserNameLength = 1 maxUserNameLength = 32 diff --git a/public_html/js/Auth.js b/public_html/js/Auth.js index 432192c3..0c867da4 100644 --- a/public_html/js/Auth.js +++ b/public_html/js/Auth.js @@ -44,10 +44,8 @@ App.Auth = function(jQuery, util, api, appState, promise) { function logout() { return promise.make(function(resolve, reject) { - appState.set('loggedIn', false); - appState.set('loginToken', null); jQuery.removeCookie('auth'); - resolve(); + return loginAnonymous().then(resolve).fail(reject); }); }; @@ -75,6 +73,7 @@ App.Auth = function(jQuery, util, api, appState, promise) { }; function updateAppState(response) { + appState.set('privileges', response.json.privileges || []); appState.set('loginToken', response.json.token && response.json.token.name); appState.set('loggedInUser', response.json.user); appState.set('loggedIn', response.json.user && !!response.json.user.id); diff --git a/public_html/js/Presenters/PagedCollectionPresenter.js b/public_html/js/Presenters/PagedCollectionPresenter.js index a870511c..85a36f92 100644 --- a/public_html/js/Presenters/PagedCollectionPresenter.js +++ b/public_html/js/Presenters/PagedCollectionPresenter.js @@ -9,6 +9,7 @@ App.Presenters.PagedCollectionPresenter = function(util, promise, api) { var baseUri; var backendUri; var renderCallback; + var failCallback; var template; var pageSize; @@ -19,11 +20,10 @@ App.Presenters.PagedCollectionPresenter = function(util, promise, api) { baseUri = args.baseUri; backendUri = args.backendUri; renderCallback = args.renderCallback; + failCallback = args.failCallback; promise.wait(util.promiseTemplate('pager')).then(function(html) { template = _.template(html); - //renderCallback({entities: [], totalRecords: 0}); - changePage(pageNumber); }); } @@ -44,7 +44,11 @@ App.Presenters.PagedCollectionPresenter = function(util, promise, api) { entities: response.json.data, totalRecords: response.json.totalRecords}); }).fail(function(response) { - console.log(Error(response.json && response.json.error || response)); + if (typeof(failCallback) !== 'undefined') { + failCallback(response); + } else { + console.log(Error(response.json && response.json.error || response)); + } }); } diff --git a/public_html/js/Presenters/TopNavigationPresenter.js b/public_html/js/Presenters/TopNavigationPresenter.js index 7596cf25..ef720393 100644 --- a/public_html/js/Presenters/TopNavigationPresenter.js +++ b/public_html/js/Presenters/TopNavigationPresenter.js @@ -33,6 +33,7 @@ App.Presenters.TopNavigationPresenter = function( $el.html(template({ loggedIn: appState.get('loggedIn'), user: appState.get('loggedInUser'), + privileges: appState.get('privileges'), })); $el.find('li.' + selectedElement).addClass('active'); }; diff --git a/public_html/js/Presenters/UserListPresenter.js b/public_html/js/Presenters/UserListPresenter.js index b1892dbb..756e88a7 100644 --- a/public_html/js/Presenters/UserListPresenter.js +++ b/public_html/js/Presenters/UserListPresenter.js @@ -7,7 +7,8 @@ App.Presenters.UserListPresenter = function( promise, router, pagedCollectionPresenter, - topNavigationPresenter) { + topNavigationPresenter, + messagePresenter) { var $el = jQuery('#content'); var template; @@ -28,6 +29,10 @@ App.Presenters.UserListPresenter = function( renderCallback: function updateCollection(data) { userList = data.entities; render(); + }, + failCallback: function(response) { + $el.empty(); + messagePresenter.showError($el, response.json && response.json.error || response); }}); }); } diff --git a/public_html/js/Router.js b/public_html/js/Router.js index fafea7e6..3d843eff 100644 --- a/public_html/js/Router.js +++ b/public_html/js/Router.js @@ -1,6 +1,6 @@ var App = App || {}; -App.Router = function(jQuery, util) { +App.Router = function(jQuery, util, appState) { var root = '#/'; diff --git a/public_html/templates/top-navigation.tpl b/public_html/templates/top-navigation.tpl index 4f14628d..8914e6a5 100644 --- a/public_html/templates/top-navigation.tpl +++ b/public_html/templates/top-navigation.tpl @@ -1,8 +1,10 @@