From 43c0aca0c0cc99b6b2d673c73f0988b28f27c28c Mon Sep 17 00:00:00 2001 From: "rahmat.suwardianto.1807" Date: Wed, 16 Jul 2025 12:44:23 +0700 Subject: [PATCH] tambah akses permision button dan keycloak --- .env.example | 5 + assets/images/backgrounds/unauthorization.svg | 1 + components/auth/LoginForm.vue | 14 +- components/auth/Unauthorization.vue | 13 ++ .../layout/full/vertical-header/ProfileDD.vue | 13 +- .../full/vertical-sidebar/sidebarItem.ts | 4 + components/table/EditableTable.vue | 13 +- composables/sidebarMenu/useSidebarAkses.ts | 74 +++++---- composables/useAccess.ts | 20 ++- composables/useSessionLogin.ts | 28 ++++ middleware/auth-menu.ts | 87 ++++++++--- nuxt.config.ts | 70 +++++---- package-lock.json | 34 ----- package.json | 1 - pages/Sample-Page-copy.vue | 2 +- pages/Sample-Page-login.vue | 43 +++++- pages/Sample-Page.vue | 19 ++- pages/auth/401.vue | 12 ++ pages/auth/Login.vue | 8 +- pages/tables/TableBasic.vue | 6 + pages/tables/TableEditable.vue | 6 + pages/tables/datatables/CrudTable.vue | 25 ++- server/api/auth/[...].ts | 118 +++++++++++++++ server/api/session.get.ts | 8 + server/api/token.get.ts | 10 ++ stores/rolePages.ts | 13 +- stores/sidebarMenuAkses/useCoba.ts | 0 stores/sidebarMenuAkses/useMenuAksesStore.ts | 47 +++--- tsconfig.json | 1 + types/components/auth/login.ts | 8 + types/components/dashboard/dashboard1.ts | 21 +++ types/components/dashboard/dashboard2.ts | 45 ++++++ types/components/dashboard/dashboard3.ts | 11 ++ types/components/datatables/index.ts | 28 ++++ types/components/front-pages/index.ts | 55 +++++++ types/components/pages/faqData.ts | 7 + types/components/pages/notificationTab.ts | 8 + types/components/pages/pricingData.ts | 18 +++ types/components/pages/searchLinks.ts | 7 + types/components/table/index.ts | 142 ++++++++++++++++++ types/components/widget/card.ts | 85 +++++++++++ types/sessionUserTypes.ts | 20 +++ utils/helper.ts | 30 ++++ 43 files changed, 1018 insertions(+), 162 deletions(-) create mode 100644 .env.example create mode 100644 assets/images/backgrounds/unauthorization.svg create mode 100644 components/auth/Unauthorization.vue create mode 100644 composables/useSessionLogin.ts create mode 100644 pages/auth/401.vue create mode 100644 server/api/auth/[...].ts create mode 100644 server/api/session.get.ts create mode 100644 server/api/token.get.ts create mode 100644 stores/sidebarMenuAkses/useCoba.ts create mode 100644 types/components/auth/login.ts create mode 100644 types/components/dashboard/dashboard1.ts create mode 100644 types/components/dashboard/dashboard2.ts create mode 100644 types/components/dashboard/dashboard3.ts create mode 100644 types/components/datatables/index.ts create mode 100644 types/components/front-pages/index.ts create mode 100644 types/components/pages/faqData.ts create mode 100644 types/components/pages/notificationTab.ts create mode 100644 types/components/pages/pricingData.ts create mode 100644 types/components/pages/searchLinks.ts create mode 100644 types/components/table/index.ts create mode 100644 types/components/widget/card.ts create mode 100644 types/sessionUserTypes.ts create mode 100644 utils/helper.ts diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..a5afaf7 --- /dev/null +++ b/.env.example @@ -0,0 +1,5 @@ +KEYCLOAK_ID="keuangan-firman" +KEYCLOAK_REALM="sandbox" +KEYCLOAK_URL="https://auth.rssa.top" +KEYCLOAK_SECRET="AA9XP2moa3pkGSgeRjX2UzYjYCgpM7Dj" +KEYCLOAK_ISSUER="https://auth.rssa.top/realms/sandbox" \ No newline at end of file diff --git a/assets/images/backgrounds/unauthorization.svg b/assets/images/backgrounds/unauthorization.svg new file mode 100644 index 0000000..82a65dd --- /dev/null +++ b/assets/images/backgrounds/unauthorization.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/components/auth/LoginForm.vue b/components/auth/LoginForm.vue index 8354fa3..04fe637 100755 --- a/components/auth/LoginForm.vue +++ b/components/auth/LoginForm.vue @@ -16,7 +16,11 @@ const passwordRules = ref([ (v: string) => (v && v.length <= 10) || 'Password must be less than 10 characters' ]); const emailRules = ref([(v: string) => !!v || 'E-mail is required', (v: string) => /.+@.+\..+/.test(v) || 'E-mail must be valid']); - +const { signIn, getProviders } = useAuth() +const providers = await getProviders() +const login = () => { + console.log(providers) +} diff --git a/components/auth/Unauthorization.vue b/components/auth/Unauthorization.vue new file mode 100644 index 0000000..cd7f8f2 --- /dev/null +++ b/components/auth/Unauthorization.vue @@ -0,0 +1,13 @@ + + diff --git a/components/layout/full/vertical-header/ProfileDD.vue b/components/layout/full/vertical-header/ProfileDD.vue index f4dd279..13f154f 100755 --- a/components/layout/full/vertical-header/ProfileDD.vue +++ b/components/layout/full/vertical-header/ProfileDD.vue @@ -1,5 +1,15 @@