From 2e823704088214fea39d48dca3467e69122973e8 Mon Sep 17 00:00:00 2001 From: advplyr Date: Mon, 6 Sep 2021 17:42:15 -0500 Subject: [PATCH] Adding permissions per user, add volume number sort --- client/components/app/Appbar.vue | 12 ++++- client/components/cards/BookCard.vue | 13 ++++- client/components/controls/OrderSelect.vue | 4 ++ client/components/modals/AccountModal.vue | 50 +++++++++++++++++-- client/components/modals/EditModal.vue | 25 +++++++++- .../components/modals/edit-tabs/Details.vue | 11 ++-- client/components/modals/edit-tabs/Tracks.vue | 16 ++++-- client/components/tables/AudioFilesTable.vue | 8 ++- client/components/tables/TracksTable.vue | 15 ++++-- client/package.json | 2 +- client/pages/audiobook/_id/edit.vue | 4 +- client/pages/audiobook/_id/index.vue | 13 ++++- client/plugins/toast.js | 14 +++--- client/store/user.js | 9 ++++ package.json | 2 +- server/ApiController.js | 42 +++++++++++++++- server/Db.js | 4 +- server/objects/User.js | 40 ++++++++++++++- 18 files changed, 241 insertions(+), 43 deletions(-) diff --git a/client/components/app/Appbar.vue b/client/components/app/Appbar.vue index c4625253..4bb130ee 100644 --- a/client/components/app/Appbar.vue +++ b/client/components/app/Appbar.vue @@ -30,8 +30,10 @@ {{ isAllSelected ? 'Select None' : 'Select All' }}
- edit - delete + + delete close
@@ -69,6 +71,12 @@ export default { }, audiobooksShowing() { return this.$store.getters['audiobooks/getFiltered']() + }, + userCanUpdate() { + return this.$store.getters['user/getUserCanUpdate'] + }, + userCanDelete() { + return this.$store.getters['user/getUserCanDelete'] } }, methods: { diff --git a/client/components/cards/BookCard.vue b/client/components/cards/BookCard.vue index 5446c9d8..cec42de6 100644 --- a/client/components/cards/BookCard.vue +++ b/client/components/cards/BookCard.vue @@ -19,13 +19,16 @@ play_circle_filled -
+ +
edit
-
+ +
{{ selected ? 'radio_button_checked' : 'radio_button_unchecked' }}
+
@@ -156,6 +159,12 @@ export default { classes.push('border-2 border-yellow-400') } return classes + }, + userCanUpdate() { + return this.$store.getters['user/getUserCanUpdate'] + }, + userCanDelete() { + return this.$store.getters['user/getUserCanDelete'] } }, methods: { diff --git a/client/components/controls/OrderSelect.vue b/client/components/controls/OrderSelect.vue index 43d8af27..9620b476 100644 --- a/client/components/controls/OrderSelect.vue +++ b/client/components/controls/OrderSelect.vue @@ -48,6 +48,10 @@ export default { text: 'Added At', value: 'addedAt' }, + { + text: 'Volume #', + value: 'book.volumeNumber' + }, { text: 'Duration', value: 'duration' diff --git a/client/components/modals/AccountModal.vue b/client/components/modals/AccountModal.vue index ab27e99d..fa12610a 100644 --- a/client/components/modals/AccountModal.vue +++ b/client/components/modals/AccountModal.vue @@ -18,7 +18,7 @@
- +
@@ -26,6 +26,37 @@
+ +
+

Permissions

+
+
+

Can Download

+
+
+ +
+
+ +
+
+

Can Update

+
+
+ +
+
+ +
+
+

Can Delete

+
+
+ +
+
+
+
Submit @@ -144,6 +175,13 @@ export default { toggleActive() { this.newUser.isActive = !this.newUser.isActive }, + userTypeUpdated(type) { + this.newUser.permissions = { + download: type !== 'guest', + update: type === 'admin', + delete: type === 'admin' + } + }, init() { this.isNew = !this.account if (this.account) { @@ -151,14 +189,20 @@ export default { username: this.account.username, password: this.account.password, type: this.account.type, - isActive: this.account.isActive + isActive: this.account.isActive, + permissions: { ...this.account.permissions } } } else { this.newUser = { username: null, password: null, type: 'user', - isActive: true + isActive: true, + permissions: { + download: true, + update: false, + delete: false + } } } } diff --git a/client/components/modals/EditModal.vue b/client/components/modals/EditModal.vue index 469dd41b..163d03ac 100644 --- a/client/components/modals/EditModal.vue +++ b/client/components/modals/EditModal.vue @@ -6,7 +6,7 @@
-