From 1f3e0243cf7a8bffe093d5738e37a6c8cc478dbf Mon Sep 17 00:00:00 2001 From: Marcel Date: Sun, 30 Dec 2018 18:45:38 +0100 Subject: [PATCH] Add automatic selection of permissions based on user rank --- assets/js/user-edit.js | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/assets/js/user-edit.js b/assets/js/user-edit.js index 347fb6b..b9dece6 100644 --- a/assets/js/user-edit.js +++ b/assets/js/user-edit.js @@ -9,11 +9,11 @@ $('.group-all').change(function () { $('input[type=checkbox]:not(.group-all)').change(function () { const groupAll = $(this).parent().parent().prev('h4').find('.group-all'); - if(!$(this).is(':checked')) { + if (!$(this).is(':checked')) { groupAll.prop('checked', false); } else { const siblings = $(this).parent().siblings().find('input[type=checkbox]:not(:checked)'); - if(siblings.length === 0) { + if (siblings.length === 0) { groupAll.prop('checked', true); } } @@ -25,4 +25,33 @@ function checkSiblings() { $(function () { +}); + +const ranks = [1, 2, 3, 6, 7, 8, 9, 10]; +const rankPresets = { + 1: [], + 2: ['user.disableAds'], + 3: [], + 6: ['blog.view', 'blog.create', 'blog.editOwn', 'dashboard.view'], + 7: ['blog.edit', 'blog.deleteOwn', 'blog.delete', 'blog.createCategory', 'blog.publish', 'blog.publishNow', 'blog.publishSelf'], + 8: ['blog.edit', 'blog.deleteOwn', 'blog.delete', 'blog.createCategory', 'blog.publish', 'blog.publishNow', 'blog.publishSelf', 'user.view', 'user.deletePost', 'user.warn', 'reports.receive', 'feedback.receive', 'feedback.reply', 'contact.view', 'contact.answer'], + 9: ['blog.edit', 'blog.deleteOwn', 'blog.delete', 'blog.createCategory', 'blog.publish', 'blog.publishNow', 'blog.publishSelf', 'blog.deleteOwnFinally', 'blog.deleteFinally', 'projects.view', 'user.changeRank', 'user.editPermissions'], + 10: ['projects.create', 'projects.editOwn', 'projects.edit', 'projects.deleteOwn', 'projects.delete', 'projects.deleteCategory', 'file.view', 'file.upload', 'file.uploadManually', 'file.delete', 'redirect.view', 'redirect.create', 'redirect.edit', 'redirect.delete', 'user.ban', 'user.viewDetails', 'dashboard.detailView'], +}; + +$('input[name=rank]').change(function () { + const activeRank = parseInt($(this).val()); + + $('.perm-box').prop('checked', false); + + for (let rank of ranks) { + if (rank > activeRank) + break; + + rankPresets[rank].forEach(perm => { + const el = $('#' + perm.replace('.', '')); + const value = !el.is(':checked'); + el.prop('checked', value); + }); + } }); \ No newline at end of file