diff --git a/frontend/middleware/check-admin.js b/frontend/middleware/check-admin.js new file mode 100644 index 00000000..6b14eb2a --- /dev/null +++ b/frontend/middleware/check-admin.js @@ -0,0 +1,6 @@ +export default function ({ store, route, redirect }) { + const role = store.getters['projects/getCurrentUserRole'] + if (!role.is_project_admin) { + redirect('/projects/' + route.params.id) + } +} diff --git a/frontend/pages/projects/_id/dataset/index.vue b/frontend/pages/projects/_id/dataset/index.vue index 94fbb368..3cd2c416 100644 --- a/frontend/pages/projects/_id/dataset/index.vue +++ b/frontend/pages/projects/_id/dataset/index.vue @@ -16,7 +16,7 @@ import DocumentDeletionButton from '@/components/containers/documents/DocumentDe export default { layout: 'project', - middleware: ['check-auth', 'auth'], + middleware: ['check-auth', 'auth', 'check-admin'], components: { DocumentList, diff --git a/frontend/pages/projects/_id/guideline/index.vue b/frontend/pages/projects/_id/guideline/index.vue index d38d63eb..f51f2f0e 100644 --- a/frontend/pages/projects/_id/guideline/index.vue +++ b/frontend/pages/projects/_id/guideline/index.vue @@ -17,7 +17,7 @@ import { mapState, mapActions } from 'vuex' export default { layout: 'project', - middleware: ['check-auth', 'auth'], + middleware: ['check-auth', 'auth', 'check-admin'], components: { Editor diff --git a/frontend/pages/projects/_id/labels/index.vue b/frontend/pages/projects/_id/labels/index.vue index 4c128058..afb8a90c 100644 --- a/frontend/pages/projects/_id/labels/index.vue +++ b/frontend/pages/projects/_id/labels/index.vue @@ -16,7 +16,7 @@ import LabelDeletionButton from '@/components/containers/labels/LabelDeletionBut export default { layout: 'project', - middleware: ['check-auth', 'auth'], + middleware: ['check-auth', 'auth', 'check-admin'], components: { LabelList, diff --git a/frontend/pages/projects/_id/members/index.vue b/frontend/pages/projects/_id/members/index.vue index 45620904..2170dd7a 100644 --- a/frontend/pages/projects/_id/members/index.vue +++ b/frontend/pages/projects/_id/members/index.vue @@ -16,7 +16,7 @@ import MemberDeletionButton from '@/components/containers/members/MemberDeletion export default { layout: 'project', - middleware: ['check-auth', 'auth'], + middleware: ['check-auth', 'auth', 'check-admin'], components: { MemberList, diff --git a/frontend/pages/projects/_id/statistics/index.vue b/frontend/pages/projects/_id/statistics/index.vue index 5d2237ce..966e92a0 100644 --- a/frontend/pages/projects/_id/statistics/index.vue +++ b/frontend/pages/projects/_id/statistics/index.vue @@ -41,7 +41,7 @@ import BarChart from '@/components/molecules/BarChart' export default { layout: 'project', - middleware: ['check-auth', 'auth'], + middleware: ['check-auth', 'auth', 'check-admin'], components: { DoughnutChart,