From d21cde20fc13911e642c68a6f10ad036246d2acc Mon Sep 17 00:00:00 2001 From: "D. Berge" Date: Sat, 12 Jul 2025 11:16:38 +0200 Subject: [PATCH] Add mixin to check access rights client-side. This replaces the Vuex getters approach (writeaccess, adminaccess) which, as access rights are no longer global but dependent on each project's settings, are no longer appropriate. --- lib/www/client/source/src/mixins/access.js | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 lib/www/client/source/src/mixins/access.js diff --git a/lib/www/client/source/src/mixins/access.js b/lib/www/client/source/src/mixins/access.js new file mode 100644 index 0000000..462b15a --- /dev/null +++ b/lib/www/client/source/src/mixins/access.js @@ -0,0 +1,31 @@ +import { mapGetters } from 'vuex'; +import access from '@/lib/organisations/access'; + +export default { + name: "AccessMixin", + + computed: { + ...mapGetters(['user', 'projectConfiguration']) + }, + + methods: { + + access (operation, item) { + if (!item) item = this.projectConfiguration; + + return access(this.user?.organisations ?? {}, item?.organisations ?? {}, operation); + }, + + readaccess (item) { + return this.access('read', item); + }, + + writeaccess (item) { + return this.access('write', item); + }, + + adminaccess (item) { + return this.access('edit', item); + } + } +}