From 125d7857ce7401e685a0f52fbbd6fd948b9aefa8 Mon Sep 17 00:00:00 2001 From: Abizrh Date: Tue, 12 Aug 2025 11:32:36 +0700 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat=20(rbac):=20implement=20role-b?= =?UTF-8?q?ased=20access=20control?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/app/patient/entry-form.vue | 39 +++++++++-- app/components/layout/Header.vue | 2 +- app/components/pub/form/block.vue | 2 +- app/components/pub/form/field-group.vue | 10 ++- app/components/pub/form/label.vue | 72 ++++++++++++++++++++ app/components/pub/nav/footer/cs.vue | 4 +- app/components/pub/ui/input/Input.vue | 10 ++- app/composables/useRBAC.ts | 48 +++++++++++++ app/layouts/default.vue | 83 ++++++++++++++++++++++- app/lib/page-permission.ts | 10 +++ app/middleware/auth.global.ts | 14 ++-- app/middleware/rbac.ts | 37 ++++++++++ app/models/role.ts | 22 ++++++ app/pages/(features)/patient/add.vue | 31 ++++++++- app/pages/(features)/patient/index.vue | 31 ++++++++- app/pages/auth/login.vue | 1 + 16 files changed, 394 insertions(+), 22 deletions(-) create mode 100644 app/components/pub/form/label.vue create mode 100644 app/composables/useRBAC.ts create mode 100644 app/lib/page-permission.ts create mode 100644 app/middleware/rbac.ts create mode 100644 app/models/role.ts diff --git a/app/components/app/patient/entry-form.vue b/app/components/app/patient/entry-form.vue index 89d8b1bf..b75af1c3 100644 --- a/app/components/app/patient/entry-form.vue +++ b/app/components/app/patient/entry-form.vue @@ -1,9 +1,38 @@ - + diff --git a/app/components/layout/Header.vue b/app/components/layout/Header.vue index 1da0a9ac..369b29ea 100644 --- a/app/components/layout/Header.vue +++ b/app/components/layout/Header.vue @@ -37,7 +37,7 @@ watch( if (val) { links.value = setLinks() } - } + }, ) diff --git a/app/components/pub/form/block.vue b/app/components/pub/form/block.vue index 5f4988d5..27015f7a 100644 --- a/app/components/pub/form/block.vue +++ b/app/components/pub/form/block.vue @@ -5,7 +5,7 @@ defineProps<{ diff --git a/app/components/pub/form/field-group.vue b/app/components/pub/form/field-group.vue index 8e901636..784870a7 100644 --- a/app/components/pub/form/field-group.vue +++ b/app/components/pub/form/field-group.vue @@ -34,7 +34,15 @@ const classVal = computed(() => { diff --git a/app/components/pub/form/label.vue b/app/components/pub/form/label.vue new file mode 100644 index 00000000..b1ad2d55 --- /dev/null +++ b/app/components/pub/form/label.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/app/components/pub/nav/footer/cs.vue b/app/components/pub/nav/footer/cs.vue index 96725a05..c7786b76 100644 --- a/app/components/pub/nav/footer/cs.vue +++ b/app/components/pub/nav/footer/cs.vue @@ -1,9 +1,9 @@