diff --git a/components/apps/Setting/TipePengguna/FormRole copy.vue b/components/apps/Setting/TipePengguna/FormRole copy.vue
new file mode 100644
index 0000000..7d125ea
--- /dev/null
+++ b/components/apps/Setting/TipePengguna/FormRole copy.vue
@@ -0,0 +1,129 @@
+
+
+
+
+ {{ data }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/apps/Setting/TipePengguna/FormRole.vue b/components/apps/Setting/TipePengguna/FormRole.vue
new file mode 100644
index 0000000..e72f41b
--- /dev/null
+++ b/components/apps/Setting/TipePengguna/FormRole.vue
@@ -0,0 +1,256 @@
+
+
+
+
+
+
+
+
+
+ (form.username = e.target.value)"
+ name="username"
+ label="user name"
+ :columns="{
+ container: 6,
+ }"
+ />
+ (form.role = e.target.value)"
+ name="role"
+ label="Role Type"
+ :columns="{
+ container: 6,
+ }"
+ />
+
+
+
+
+
+ | Module |
+ Path |
+ Create |
+ View |
+ Update |
+ Delete |
+ Action |
+
+
+
+
+
+
+ |
+
+ onSelectSearch(val,index)"
+ :items="menu"
+ :search="true"
+ :native="false"
+ input-type="search"
+ autocomplete="of"
+ value-prop="title"
+ label-prop="title"
+ :create="true"
+ :add-option-on="['enter', 'tab', 'space']"
+ :columns="{
+ container: 6,
+ }"
+ />
+ |
+
+
+
+ |
+
+
+ form.pages[index].permissions[0].create = val"
+ :columns="{
+ container: 6,
+ }"
+ trueValue=1
+ falseValue=0
+ />
+ |
+
+ form.pages[index].permissions[0].view = val"
+ :columns="{
+ container: 6,
+ }"
+ trueValue=1
+ falseValue=0
+ />
+ |
+
+ form.pages[index].permissions[0].update = val"
+ :columns="{
+ container: 6,
+ }"
+ trueValue=1
+ falseValue=0
+ />
+ |
+
+ form.pages[index].permissions[0].delete = val"
+ :columns="{
+ container: 6,
+ }"
+ trueValue=1
+ falseValue=0
+ />
+ |
+
+
+ Page
+ Page
+
+ |
+
+
+
+
+
+
+
+
+
diff --git a/components/apps/Setting/TipePengguna/FormRole2.vue b/components/apps/Setting/TipePengguna/FormRole2.vue
new file mode 100644
index 0000000..19cff1e
--- /dev/null
+++ b/components/apps/Setting/TipePengguna/FormRole2.vue
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+ {{ form }}
+
+
+
+
+
+
+
+
+ | Module |
+ Path |
+ Create |
+ View |
+ Update |
+ Delete |
+ Action |
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/apps/Setting/TipePengguna/ViewPermission.vue b/components/apps/Setting/TipePengguna/ViewPermission.vue
new file mode 100644
index 0000000..fca0d0c
--- /dev/null
+++ b/components/apps/Setting/TipePengguna/ViewPermission.vue
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+
+ Type User
+
+
+
+ Type User
+ {{ getData.length }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ data.prop.display }}
+
+
+
+
+
+ Type User
+ Type User
+
+
+
+
+
+ Are you sure you want to delete this item?
+
+ Cancel
+ OK
+
+
+
+
+
diff --git a/components/apps/Setting/TipePengguna/element/checkboxElement.vue b/components/apps/Setting/TipePengguna/element/checkboxElement.vue
new file mode 100644
index 0000000..d7f9649
--- /dev/null
+++ b/components/apps/Setting/TipePengguna/element/checkboxElement.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/apps/Setting/TipePengguna/element/selectElement.vue b/components/apps/Setting/TipePengguna/element/selectElement.vue
new file mode 100644
index 0000000..fd9b0c0
--- /dev/null
+++ b/components/apps/Setting/TipePengguna/element/selectElement.vue
@@ -0,0 +1,23 @@
+
+
+
+
\ No newline at end of file
diff --git a/components/apps/Setting/TipePengguna/element/table.vue b/components/apps/Setting/TipePengguna/element/table.vue
new file mode 100644
index 0000000..0400c65
--- /dev/null
+++ b/components/apps/Setting/TipePengguna/element/table.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+ | Module |
+ Permission |
+
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+
+
+
diff --git a/components/apps/Setting/TipePengguna/element/table2.vue b/components/apps/Setting/TipePengguna/element/table2.vue
new file mode 100644
index 0000000..af66a81
--- /dev/null
+++ b/components/apps/Setting/TipePengguna/element/table2.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Module |
+ Permission |
+ post |
+
+
+
+
+
+ |
+ {{ item.name }} |
+ {{ item.post }} |
+
+
+
+
+
+
diff --git a/components/layout/full/vertical-sidebar/sidebarItem.ts b/components/layout/full/vertical-sidebar/sidebarItem.ts
index 1b1236b..643e669 100755
--- a/components/layout/full/vertical-sidebar/sidebarItem.ts
+++ b/components/layout/full/vertical-sidebar/sidebarItem.ts
@@ -726,7 +726,7 @@ const sidebarItem: menu[] = [
{
title: 'Tipe Pengguna',
icon: 'check-circle-bold',
- to: '/setting/tipepengguna/'
+ to: '/apps/setting/tipepengguna/view'
},
{
title: 'view permisson',
diff --git a/components/widgets2/cards/SettingCards.vue b/components/widgets2/cards/SettingCards.vue
new file mode 100644
index 0000000..19eafee
--- /dev/null
+++ b/components/widgets2/cards/SettingCards.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/widgets2/cards/UserCards.vue b/components/widgets2/cards/UserCards.vue
index b0a951a..8d749e0 100644
--- a/components/widgets2/cards/UserCards.vue
+++ b/components/widgets2/cards/UserCards.vue
@@ -10,11 +10,17 @@ const userCards: any = computed(() => {
return props.data
});
+const emit = defineEmits(['paginated']);
-
+
+
@@ -36,6 +42,12 @@ const userCards: any = computed(() => {
+
+
diff --git a/composable/index.ts b/composable/index.ts
index bc76d2c..bc6adae 100644
--- a/composable/index.ts
+++ b/composable/index.ts
@@ -1,18 +1,89 @@
-import { toast } from "vue3-toastify";
-// export function deleteItem (data:any, index:number) {
-// try {
-// data.splice(index,1)
-// } catch (error) {
-
-// }
-// }
-// export function delete(){
+import { toast } from 'vue3-toastify';
+interface useRoleInterface {
+ datas: {
+ dialog: Ref
+ dialogDelete: Ref
+ getData: Ref
+ },
+ method: {
+ formTitle: (index: number) => string
+ typeForm: (index: number) => string
+ deleteItem: (data: any, index: number) => any
+ deleteConfirm: (data: any, index: number) => any
+ toastAlert: (msg: string, type: any) => void
+ openDeleteDialog: (value: boolean) => any
+ openFormDialog: (value: boolean) => any
+ findRole: (list: any, item: string) => any
+ paginated: (data: any) => void
+ }
+}
-// }
-export function toastAlert(msg:string,type:any){
- toast(msg, {
- type: type,
- dangerouslyHTMLString: true,
- autoClose: 2000,
- })
-}
\ No newline at end of file
+const useRole = (): useRoleInterface => {
+ const dialog: Ref = ref(false);
+ const dialogDelete: Ref = ref(false);
+ const getData: Ref = ref([]);
+ const page: Ref = ref(0);
+ const limit: Ref = ref(5);
+ const formTitle = (index: number): string => {
+ return index === -1 ? "New Item" : "Edit Item";
+ }
+
+ const typeForm = (index: number): string => {
+ return index === -1 ? "create" : "edit";
+ }
+ const deleteItem = (data: any, index: number): any => {
+ return data.splice(index, 1)
+ }
+ const deleteConfirm = (data: any, index: number): void => {
+ deleteItem(data, index);
+ openDeleteDialog(false);
+ toastAlert("Berhasil hapus data!", "success");
+ }
+ const toastAlert = (msg: string, type: any): void => {
+ toast(msg, {
+ type: type,
+ dangerouslyHTMLString: true,
+ autoClose: 2000,
+ })
+ }
+ const openDeleteDialog = (value: boolean): any => {
+ dialogDelete.value = value;
+ }
+ const openFormDialog = (value: boolean): any => {
+ dialog.value = value;
+ }
+ const findRole = (list: any, item: string): any => {
+ return list.find((data: any) => data.value === item);
+ }
+ const paginated = (data:any) => {
+ let skip = page.value * limit.value;
+ const roles = data.filter((i,index:number)=>index >= skip && index < skip + limit.value);
+ // const roles = await $fetch(`/api/roles/get?skip=${skip}`);
+ if (roles && roles.length > 0) {
+ getData.value.push(...roles);
+ page.value++;
+ }
+ }
+
+ return {
+ datas: {
+ dialog,
+ dialogDelete,
+ getData
+ },
+ method: {
+ formTitle,
+ typeForm,
+ deleteItem,
+ deleteConfirm,
+ toastAlert,
+ openDeleteDialog,
+ openFormDialog,
+ findRole,
+ paginated
+ }
+ }
+
+}
+
+export default useRole
\ No newline at end of file
diff --git a/composable/indexLama.ts b/composable/indexLama.ts
new file mode 100644
index 0000000..06eddb6
--- /dev/null
+++ b/composable/indexLama.ts
@@ -0,0 +1,26 @@
+import { toast } from "vue3-toastify";
+// export function deleteItem (data:any, index:number) {
+// try {
+// data.splice(index,1)
+// } catch (error) {
+
+// }
+// }
+
+export function formTitle(index:number){
+ return index === -1 ? "New Item" : "Edit Item";
+}
+export function typeForm(index:number){
+ return index === -1 ? "create" : "edit";
+}
+
+export function deleteItem(data:any, index:number) {
+ return data.splice(index,1)
+}
+export function toastAlert(msg:string,type:any){
+ toast(msg, {
+ type: type,
+ dangerouslyHTMLString: true,
+ autoClose: 2000,
+ })
+}
\ No newline at end of file
diff --git a/data/dummy/keuangan.type_user.json b/data/dummy/keuangan.type_user.json
index 542ef13..01c445f 100644
--- a/data/dummy/keuangan.type_user.json
+++ b/data/dummy/keuangan.type_user.json
@@ -137,5 +137,655 @@
]
}
]
+ },
+ {
+ "id": "4",
+ "typeUser": "Staf4",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "5",
+ "typeUser": "Staf5",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "6",
+ "typeUser": "Staf6",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "7",
+ "typeUser": "Staf7",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "8",
+ "typeUser": "Staf8",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "9",
+ "typeUser": "Staf9",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "10",
+ "typeUser": "Staf10",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "11",
+ "typeUser": "Staf11",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "12",
+ "typeUser": "Staf12",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "13",
+ "typeUser": "Staf13",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "14",
+ "typeUser": "Staf14",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "15",
+ "typeUser": "Staf15",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "16",
+ "typeUser": "Staf16",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "17",
+ "typeUser": "Staf17",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "18",
+ "typeUser": "Staf18",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "19",
+ "typeUser": "Staf19",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "20",
+ "typeUser": "Staf20",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "21",
+ "typeUser": "Staf21",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "22",
+ "typeUser": "Staf22",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "23",
+ "typeUser": "Staf23",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "24",
+ "typeUser": "Staf24",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "25",
+ "typeUser": "Staf25",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "26",
+ "typeUser": "Staf26",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "27",
+ "typeUser": "Staf27",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "28",
+ "typeUser": "Staf28",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "29",
+ "typeUser": "Staf29",
+ "roleMenu": [
+ {
+ "permission": "0",
+ "menu": [
+ {
+ "Module": "module1",
+ "create": "true",
+ "update": "false",
+ "delete": "false",
+ "show": "false"
+ },
+ {
+ "Module": "module2",
+ "create": "true",
+ "update": "true",
+ "delete": "false",
+ "show": "false"
+ }
+ ]
+ }
+ ]
}
]
diff --git a/data/dummy/rolePage.ts b/data/dummy/rolePage.ts
new file mode 100644
index 0000000..28e21ea
--- /dev/null
+++ b/data/dummy/rolePage.ts
@@ -0,0 +1,136 @@
+import type { RolePage } from "~/types/setting/setting";
+
+const rolePages: RolePage[] = [
+ {
+ id_user: 1,
+ username: "Super Admin",
+ email: "admin@company.com",
+ password: "123456",
+ full_name: "System Administrator",
+ role: "Super admin",
+ role_description: "Administrative access with most permissions",
+ pages: [
+ {
+ title: "Dashboard1",
+ path: "/dashboards/dashboard1",
+ permissions: ["create", "view", "update", "delete"],
+ },
+ {
+ title: "Dashboard2",
+ path: "/dashboards/dashboard2",
+ permissions: ["create", "view", "update", "delete"],
+ },
+ {
+ title: "Homepage",
+ path: "/front-page/homepage",
+ permissions: ["create", "view", "update", "delete"],
+ },
+ {
+ title: "About Us",
+ path: "/front-page/about-us",
+ permissions: ["create", "view", "update", "delete"],
+ },
+ {
+ title: "Error",
+ path: "/auth/404",
+ permissions: ["view"],
+ },
+ {
+ title: "Side Login",
+ path: "/auth/login",
+ permissions: ["view"],
+ },
+ ],
+ },
+
+ {
+ id_user: 2,
+ username: "admin",
+ email: "manager1@company.com",
+ password: "234567",
+ full_name: "John Manager",
+ role: "admin",
+ role_description: "admin level access for operational tasks",
+ pages: [
+ {
+ title: "Dashboard1",
+ path: "/dashboards/dashboard1",
+ permissions: ["view"],
+ },
+ {
+ title: "Dashboard2",
+ path: "/dashboards/dashboard1",
+ permissions: ["view"],
+ },
+ {
+ title: "Homepage",
+ path: "/front-page/homepage",
+ permissions: ["view"],
+ },
+ {
+ title: "About Us",
+ path: "/front-page/about-us",
+ permissions: ["view"],
+ },
+ ],
+ },
+ {
+ id_user: 3,
+ username: "staf",
+ email: "manager1@company.com",
+ password: "234567",
+ full_name: "John Manager",
+ role: "staf",
+ role_description: "staf level access for operational tasks",
+ pages: [
+ {
+ title: "Dashboard1",
+ path: "/dashboards/dashboard1",
+ permissions: ["view"],
+ },
+ {
+ title: "Dashboard2",
+ path: "/dashboards/dashboard1",
+ permissions: ["view"],
+ },
+ {
+ title: "Homepage",
+ path: "/front-page/homepage",
+ permissions: ["view"],
+ },
+ {
+ title: "About Us",
+ path: "/front-page/about-us",
+ permissions: ["view"],
+ },
+ ],
+ },
+ {
+ id_user: 4,
+ username: "PJA / Koordinator",
+ email: "manager1@company.com",
+ password: "234567",
+ full_name: "John Manager",
+ role: "PJA / Koordinator",
+ role_description: "PJA / Koordinator level access for operational tasks",
+ pages: [
+ {
+ title: "Dashboard1",
+ path: "/dashboards/dashboard1",
+ permissions: ["view"],
+ },
+ {
+ title: "Dashboard2",
+ path: "/dashboards/dashboard1",
+ permissions: ["view"],
+ },
+ {
+ title: "Homepage",
+ path: "/front-page/homepage",
+ permissions: ["view"],
+ },
+ ],
+ },
+];
+
+export default rolePages;
diff --git a/data/dummy/rolePage1.ts b/data/dummy/rolePage1.ts
new file mode 100644
index 0000000..7063610
--- /dev/null
+++ b/data/dummy/rolePage1.ts
@@ -0,0 +1,256 @@
+const rolePages = [
+ {
+ id_user: 1,
+ username: "Super Admin",
+ email: "admin@company.com",
+ password: "123456",
+ full_name: "System Administrator",
+ role: "Super Admin",
+ role_description: "Administrative access with most permissions",
+ pages: [
+ {
+ header: "dashboards",
+ title: "Dashboard1",
+ path: "/dashboards/dashboard1",
+ permissions: [
+ {
+ create: 1,
+ update: 1,
+ view: 1,
+ delete: 1
+ }
+ ],
+ },
+ {
+ header: "dashboards",
+ title: "Dashboard2",
+ path: "/dashboards/dashboard2",
+ permissions: [
+ {
+ create: 1,
+ update: 1,
+ view: 1,
+ delete: 1
+ }
+ ],
+ },
+ {
+ header: "front-page",
+ title: "Homepage",
+ path: "/front-page/homepage",
+ permissions: [
+ {
+ create: 1,
+ update: 1,
+ view: 1,
+ delete: 1
+ }
+ ],
+ },
+ {
+ title: "About Us",
+ path: "/front-page/about-us",
+ permissions: [
+ {
+ create: 1,
+ update: 1,
+ view: 1,
+ delete: 1
+ }
+ ],
+ },
+ {
+ title: "Error",
+ path: "/auth/404",
+ permissions: [
+ {
+ create: 0,
+ update: 0,
+ view: 1,
+ delete:0
+ }
+ ],
+ },
+ {
+ title: "Side Login",
+ path: "/auth/login",
+ permissions: [
+ {
+ create: 0,
+ update: 0,
+ view: 1,
+ delete: 0
+ }
+ ],
+ },
+ ],
+ },
+
+ {
+ id_user: 2,
+ username: "admin",
+ email: "manager1@company.com",
+ password: "234567",
+ full_name: "John Manager",
+ role: "Admin",
+ role_description: "admin level access for operational tasks",
+ pages: [
+ {
+ title: "Dashboard1",
+ path: "/dashboards/dashboard1",
+ permissions: [
+ {
+ create: 0,
+ update: 0,
+ view: 1,
+ delete: 0
+ }
+ ],
+ },
+ {
+ title: "Dashboard2",
+ path: "/dashboards/dashboard1",
+ permissions: [
+ {
+ create: 0,
+ update: 0,
+ view: 1,
+ delete: 0
+ }
+ ],
+ },
+ {
+ title: "Homepage",
+ path: "/front-page/homepage",
+ permissions: [
+ {
+ create: 0,
+ update: 0,
+ view: 1,
+ delete: 0
+ }
+ ],
+ },
+ {
+ title: "About Us",
+ path: "/front-page/about-us",
+ permissions: [
+ {
+ create: 0,
+ update: 0,
+ view: 1,
+ delete: 0
+ }
+ ],
+ },
+ ],
+ },
+ {
+ id_user: 3,
+ username: "staf",
+ email: "manager1@company.com",
+ password: "234567",
+ full_name: "John Manager",
+ role: "Staf",
+ role_description: "staf level access for operational tasks",
+ pages: [
+ {
+ title: "Dashboard1",
+ path: "/dashboards/dashboard1",
+ permissions: [
+ {
+ create: 0,
+ update: 0,
+ view: 1,
+ delete: 0
+ }
+ ],
+ },
+ {
+ title: "Dashboard2",
+ path: "/dashboards/dashboard1",
+ permissions: [
+ {
+ create: 0,
+ update: 0,
+ view: 1,
+ delete: 0
+ }
+ ],
+ },
+ {
+ title: "Homepage",
+ path: "/front-page/homepage",
+ permissions: [
+ {
+ create: 0,
+ update: 0,
+ view: 1,
+ delete: 0
+ }
+ ],
+ },
+ {
+ title: "About Us",
+ path: "/front-page/about-us",
+ permissions: [
+ {
+ create: 0,
+ update: 0,
+ view: 1,
+ delete: 0
+ }
+ ],
+ },
+ ],
+ },
+ {
+ id_user: 4,
+ username: "PJA / Koordinator",
+ email: "manager1@company.com",
+ password: "234567",
+ full_name: "John Manager",
+ role: "PJA / Koordinator",
+ role_description: "PJA / Koordinator level access for operational tasks",
+ pages: [
+ {
+ title: "Dashboard1",
+ path: "/dashboards/dashboard1",
+ permissions: [
+ {
+ create: 0,
+ update: 0,
+ view: 1,
+ delete: 0
+ }
+ ],
+ },
+ {
+ title: "Dashboard2",
+ path: "/dashboards/dashboard1",
+ permissions: [
+ {
+ create: 0,
+ update: 0,
+ view: 1,
+ delete: 0
+ }
+ ],
+ },
+ {
+ title: "Homepage",
+ path: "/front-page/homepage",
+ permissions: [
+ {
+ create: 0,
+ update: 0,
+ view: 1,
+ delete: 0
+ }
+ ],
+ },
+ ],
+ },
+];
+
+export default rolePages;
diff --git a/nuxt.config.ts b/nuxt.config.ts
index 556e2eb..128c074 100755
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -115,7 +115,8 @@ export default defineNuxtConfig({
public: {
authUrl: process.env.AUTH_ORIGIN || "http://meninjar.dev.rssa.id:3000",
keycloakIssuer:
- process.env.KEYCLOAK_ISSUER || "https://auth.rssa.top/realms/sandbox"
+ process.env.KEYCLOAK_ISSUER || "https://auth.rssa.top/realms/sandbox",
+ APIBASE:process.env.BASEAPIURL
}
},
// auth: {
diff --git a/pages/apps/Setting/TipePengguna/create.vue b/pages/apps/Setting/TipePengguna/create.vue
new file mode 100644
index 0000000..034070f
--- /dev/null
+++ b/pages/apps/Setting/TipePengguna/create.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/apps/Setting/TipePengguna/update.vue b/pages/apps/Setting/TipePengguna/update.vue
new file mode 100644
index 0000000..dcf23de
--- /dev/null
+++ b/pages/apps/Setting/TipePengguna/update.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/Setting/TipePengguna/index.vue b/pages/apps/Setting/TipePengguna/view.vue
similarity index 81%
rename from pages/Setting/TipePengguna/index.vue
rename to pages/apps/Setting/TipePengguna/view.vue
index 4925f0c..085ff66 100644
--- a/pages/Setting/TipePengguna/index.vue
+++ b/pages/apps/Setting/TipePengguna/view.vue
@@ -5,7 +5,7 @@ import BaseBreadcrumb from '@/components/shared/BaseBreadcrumb.vue';
import UiParentCard from '@/components/shared/UiParentCard.vue';
//Table
-import Table from '@/components/Setting/TipePengguna/TableViewPermission.vue';
+import Table from '@/components/apps/Setting/TipePengguna/ViewPermission.vue';
// template breadcrumb
const page = ref({ title: 'Basic Table' });
@@ -30,9 +30,9 @@ const breadcrumbs = ref([
-
-
-
+
+
+
diff --git a/store/apps/Setting/setting.ts b/store/apps/Setting/setting.ts
index 4ddc131..ac3f5cd 100644
--- a/store/apps/Setting/setting.ts
+++ b/store/apps/Setting/setting.ts
@@ -1,12 +1,111 @@
-import { defineStore } from "pinia"
-export const useSettingStore = defineStore('setting',{
- state:(): any => ({
- typeUser:[],
- }),
- actions:{
- async getTypeUser(body:Record){
- // console.log("ini di pinia:",body)
- this.typeUser = body
+import { defineStore } from "pinia";
+const runtime = useRuntimeConfig().public;
+export const useSettingStore = defineStore("setting", {
+ state: (): any => ({
+ typeUser: [],
+ listTypeUser: [],
+ listMenu: [],
+ roleMenuById: [],
+ message: "",
+ }),
+ actions: {
+ async getTypeUser(body: Record) {
+ // console.log("ini di pinia:",body)
+ this.typeUser = body;
+ },
+ async getMenu() {
+ try {
+ const response = await $fetch(`${runtime.APIBASE}/menu/getlist`, {
+ method: "GET",
+ headers: { "Content-Type": "application/json" },
+ });
+ console.log("dipinia ini responnya:", response);
+ this.listMenu = response as [];
+ } catch (error) {
+ if (error instanceof Error) {
+ this.message = error.message;
+ // console.log(error.message)
}
- }
-})
\ No newline at end of file
+ }
+ },
+ async getRoleMenuById(body: Record) {
+ try {
+ console.log(body);
+ const response = await $fetch(
+ `${runtime.APIBASE}/menu/role/type/${body}`,
+ {
+ headers: {
+ "Content-Type": "application/json",
+ },
+ method: "GET",
+ }
+ );
+ this.roleMenuById = response as [];
+ } catch (error) {
+ if (error instanceof Error) {
+ this.message = error.message;
+ // console.log(error.message)
+ }
+ }
+ },
+ async getAllTypeUser() {
+ try {
+ const response = await $fetch(`${runtime.APIBASE}/menu/type`, {
+ method: "GET",
+ headers: { "Content-Type": "application/json" },
+ });
+ this.listTypeUser = response as [];
+ } catch (error) {
+ if (error instanceof Error) {
+ this.message = error.message;
+ // console.log(error.message)
+ }
+ }
+ },
+ async postRoleUserMenu(body: Record) {
+ try {
+ const roleUserMenu = body.menus.map((item) => ({
+ type_user_id: item.type_user_id,
+ menu_id: item.menu_id,
+ access: [
+ {
+ add: parseInt(item.access[0].value),
+ update: parseInt(item.access[1].value),
+ read: parseInt(item.access[2].value),
+ delete: parseInt(item.access[3].value),
+ },
+ ],
+ }));
+ console.log("body post:", body.menus);
+ const response = await $fetch(
+ `${runtime.APIBASE}/menu/update/rolemenu?id=${body.menus[0].type_user_id}`,
+ {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify(roleUserMenu),
+ }
+ );
+ } catch (error) {
+ if (error instanceof Error) {
+ this.message = error.message;
+ // console.log(error.message)
+ }
+ }
+ },
+ // async addTypeUser(data: any) {
+ // console.log(data)
+ // try {
+ // const response = await $fetch('https://',{
+ // method: 'POST',
+ // headers: {'Content-Type': 'application/json'},
+ // body: JSON.stringify(data)
+ // })
+ // } catch (error) {
+ // if(error instanceof Error){
+ // this.message = error.message
+ // // console.log(error.message)
+ // }
+ // }
+ // }
+ },
+});
diff --git a/types/setting/setting.d.ts b/types/setting/setting.d.ts
new file mode 100644
index 0000000..62d440e
--- /dev/null
+++ b/types/setting/setting.d.ts
@@ -0,0 +1,14 @@
+export interface RolePage {
+ id_user: number;
+ username: string;
+ email: string;
+ password: string;
+ full_name: string;
+ role: string;
+ role_description: string;
+ pages: {
+ title: string;
+ path: string;
+ permissions: string[];
+ }[];
+}
\ No newline at end of file
diff --git a/utils/convertCurrency.ts b/utils/convertCurrency.ts
new file mode 100644
index 0000000..cd9b1fa
--- /dev/null
+++ b/utils/convertCurrency.ts
@@ -0,0 +1,12 @@
+
+export function format(data:number){
+ return new Intl.NumberFormat('id-ID',{
+ style:'currency',
+ currency:'IDR',
+ currencyDisplay: "code",
+ }).formatToParts(data)
+ .filter(x => x.type !== "currency")
+ .filter(x => x.type !== "literal" || x.value.trim().length !== 0)
+ .map(x => x.value)
+ .join("")
+}
\ No newline at end of file