member data reads and display
This commit is contained in:
parent
c1a6c0040d
commit
5eeea631c0
57 changed files with 1149 additions and 110 deletions
|
@ -1,6 +1,6 @@
|
|||
import NProgress from "nprogress";
|
||||
import { useAbilityStore } from "../stores/ability";
|
||||
import { useNavigationStore } from "../stores/admin/navigation";
|
||||
import { useAbilityStore } from "@/stores/ability";
|
||||
import { useNavigationStore } from "@/stores/admin/navigation";
|
||||
|
||||
export async function abilityAndNavUpdate(to: any, from: any, next: any) {
|
||||
NProgress.start();
|
||||
|
|
|
@ -2,9 +2,9 @@ import NProgress from "nprogress";
|
|||
import { useAuthStore } from "@/stores/auth";
|
||||
import { useAccountStore } from "@/stores/account";
|
||||
import { jwtDecode, type JwtPayload } from "jwt-decode";
|
||||
import { refreshToken } from "../serverCom";
|
||||
import type { PermissionObject } from "../types/permissionTypes";
|
||||
import { useAbilityStore } from "../stores/ability";
|
||||
import { refreshToken } from "@/serverCom";
|
||||
import type { PermissionObject } from "@/types/permissionTypes";
|
||||
import { useAbilityStore } from "@/stores/ability";
|
||||
|
||||
export type Payload = JwtPayload & {
|
||||
userId: number;
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
import { createRouter, createWebHistory, createWebHashHistory } from "vue-router";
|
||||
import Login from "../views/Login.vue";
|
||||
import Login from "@/views/Login.vue";
|
||||
|
||||
import { isAuthenticated } from "./authGuards";
|
||||
import { loadAccountData } from "./accountGuard";
|
||||
import { isSetup } from "./setupGuard";
|
||||
import { abilityAndNavUpdate } from "./adminGuard";
|
||||
import type { PermissionType, PermissionSection, PermissionModule } from "../types/permissionTypes";
|
||||
import type { PermissionType, PermissionSection, PermissionModule } from "@/types/permissionTypes";
|
||||
import { setMemberId } from "./memberGuard";
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHistory(import.meta.env.BASE_URL),
|
||||
|
@ -22,18 +23,18 @@ const router = createRouter({
|
|||
{
|
||||
path: "/setup",
|
||||
name: "setup",
|
||||
component: () => import("../views/RouterView.vue"),
|
||||
component: () => import("@/views/RouterView.vue"),
|
||||
beforeEnter: [isSetup],
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
name: "setup-create",
|
||||
component: () => import("../views/setup/Setup.vue"),
|
||||
component: () => import("@/views/setup/Setup.vue"),
|
||||
},
|
||||
{
|
||||
path: "verify",
|
||||
name: "setup-verify",
|
||||
component: () => import("../views/setup/Verify.vue"),
|
||||
component: () => import("@/views/setup/Verify.vue"),
|
||||
props: (route) => ({ mail: route.query.mail, token: route.query.token }),
|
||||
},
|
||||
],
|
||||
|
@ -41,53 +42,113 @@ const router = createRouter({
|
|||
{
|
||||
path: "/admin",
|
||||
name: "admin",
|
||||
component: () => import("../views/admin/View.vue"),
|
||||
component: () => import("@/views/admin/View.vue"),
|
||||
beforeEnter: [isAuthenticated],
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
name: "admin-default",
|
||||
component: () => import("../views/RouterView.vue"),
|
||||
component: () => import("@/views/RouterView.vue"),
|
||||
},
|
||||
{
|
||||
path: "club",
|
||||
name: "admin-club",
|
||||
component: () => import("../views/RouterView.vue"),
|
||||
component: () => import("@/views/RouterView.vue"),
|
||||
meta: { type: "read", section: "club" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
name: "admin-club-default",
|
||||
component: () => import("../views/admin/ViewSelect.vue"),
|
||||
component: () => import("@/views/admin/ViewSelect.vue"),
|
||||
meta: { type: "read", section: "club" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
},
|
||||
{
|
||||
path: "members",
|
||||
name: "admin-club-member",
|
||||
component: () => import("../views/admin/members/Member.vue"),
|
||||
name: "admin-club-member-route",
|
||||
component: () => import("@/views/RouterView.vue"),
|
||||
meta: { type: "read", section: "club", module: "member" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
name: "admin-club-member",
|
||||
component: () => import("@/views/admin/members/Member.vue"),
|
||||
},
|
||||
{
|
||||
path: ":id/edit",
|
||||
name: "admin-club-member-edit",
|
||||
component: () => import("@/views/admin/members/MemberEdit.vue"),
|
||||
meta: { type: "update", section: "club", module: "member" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
props: true,
|
||||
},
|
||||
{
|
||||
path: ":memberId",
|
||||
name: "admin-club-member-routing",
|
||||
component: () => import("@/views/admin/members/MemberRouting.vue"),
|
||||
beforeEnter: [setMemberId],
|
||||
props: true,
|
||||
children: [
|
||||
{
|
||||
path: "overview",
|
||||
name: "admin-club-member-overview",
|
||||
component: () => import("@/views/admin/members/MemberOverview.vue"),
|
||||
props: true,
|
||||
},
|
||||
{
|
||||
path: "membership",
|
||||
name: "admin-club-member-membership",
|
||||
component: () => import("@/views/admin/members/Membership.vue"),
|
||||
props: true,
|
||||
},
|
||||
{
|
||||
path: "communication",
|
||||
name: "admin-club-member-communication",
|
||||
component: () => import("@/views/admin/members/MemberCommunication.vue"),
|
||||
props: true,
|
||||
},
|
||||
{
|
||||
path: "awards",
|
||||
name: "admin-club-member-awards",
|
||||
component: () => import("@/views/admin/members/MemberAwards.vue"),
|
||||
props: true,
|
||||
},
|
||||
{
|
||||
path: "qualifications",
|
||||
name: "admin-club-member-qualifications",
|
||||
component: () => import("@/views/admin/members/MemberQualifications.vue"),
|
||||
props: true,
|
||||
},
|
||||
{
|
||||
path: "positions",
|
||||
name: "admin-club-member-positions",
|
||||
component: () => import("@/views/admin/members/MemberExecutivePositions.vue"),
|
||||
props: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "calendar",
|
||||
name: "admin-club-calendar",
|
||||
component: () => import("../views/admin/members/Overview.vue"),
|
||||
component: () => import("@/views/admin/members/Overview.vue"),
|
||||
meta: { type: "read", section: "club", module: "calendar" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
},
|
||||
{
|
||||
path: "newsletter",
|
||||
name: "admin-club-newsletter",
|
||||
component: () => import("../views/admin/members/Overview.vue"),
|
||||
component: () => import("@/views/admin/members/Overview.vue"),
|
||||
meta: { type: "read", section: "club", module: "newsletter" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
},
|
||||
{
|
||||
path: "protocol",
|
||||
name: "admin-club-protocol",
|
||||
component: () => import("../views/admin/members/Overview.vue"),
|
||||
component: () => import("@/views/admin/members/Overview.vue"),
|
||||
meta: { type: "read", section: "club", module: "protocoll" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
},
|
||||
|
@ -96,33 +157,33 @@ const router = createRouter({
|
|||
{
|
||||
path: "settings",
|
||||
name: "admin-settings",
|
||||
component: () => import("../views/RouterView.vue"),
|
||||
component: () => import("@/views/RouterView.vue"),
|
||||
meta: { type: "read", section: "settings" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
name: "admin-settings-default",
|
||||
component: () => import("../views/admin/ViewSelect.vue"),
|
||||
component: () => import("@/views/admin/ViewSelect.vue"),
|
||||
meta: { type: "read", section: "settings" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
},
|
||||
{
|
||||
path: "qualification",
|
||||
name: "admin-settings-qualification-route",
|
||||
component: () => import("../views/RouterView.vue"),
|
||||
component: () => import("@/views/RouterView.vue"),
|
||||
meta: { type: "read", section: "settings", module: "qualification" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
name: "admin-settings-qualification",
|
||||
component: () => import("../views/admin/settings/Qualification.vue"),
|
||||
component: () => import("@/views/admin/settings/Qualification.vue"),
|
||||
},
|
||||
{
|
||||
path: ":id/edit",
|
||||
name: "admin-settings-qualification-edit",
|
||||
component: () => import("../views/admin/settings/QualificationEdit.vue"),
|
||||
component: () => import("@/views/admin/settings/QualificationEdit.vue"),
|
||||
meta: { type: "update", section: "settings", module: "qualification" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
props: true,
|
||||
|
@ -132,19 +193,19 @@ const router = createRouter({
|
|||
{
|
||||
path: "award",
|
||||
name: "admin-settings-award-route",
|
||||
component: () => import("../views/RouterView.vue"),
|
||||
component: () => import("@/views/RouterView.vue"),
|
||||
meta: { type: "read", section: "settings", module: "award" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
name: "admin-settings-award",
|
||||
component: () => import("../views/admin/settings/Award.vue"),
|
||||
component: () => import("@/views/admin/settings/Award.vue"),
|
||||
},
|
||||
{
|
||||
path: ":id/edit",
|
||||
name: "admin-settings-award-edit",
|
||||
component: () => import("../views/admin/settings/AwardEdit.vue"),
|
||||
component: () => import("@/views/admin/settings/AwardEdit.vue"),
|
||||
meta: { type: "update", section: "settings", module: "award" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
props: true,
|
||||
|
@ -154,26 +215,26 @@ const router = createRouter({
|
|||
{
|
||||
path: "executive-position",
|
||||
name: "admin-settings-executive_position",
|
||||
component: () => import("../views/admin/settings/ExecutivePosition.vue"),
|
||||
component: () => import("@/views/admin/settings/ExecutivePosition.vue"),
|
||||
meta: { type: "read", section: "settings", module: "executive_position" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
},
|
||||
{
|
||||
path: "executive-position",
|
||||
name: "admin-settings-executive_position-route",
|
||||
component: () => import("../views/RouterView.vue"),
|
||||
component: () => import("@/views/RouterView.vue"),
|
||||
meta: { type: "read", section: "settings", module: "executive_position" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
name: "admin-settings-executive_position",
|
||||
component: () => import("../views/admin/settings/ExecutivePosition.vue"),
|
||||
component: () => import("@/views/admin/settings/ExecutivePosition.vue"),
|
||||
},
|
||||
{
|
||||
path: ":id/edit",
|
||||
name: "admin-settings-executive_position-edit",
|
||||
component: () => import("../views/admin/settings/ExecutivePositionEdit.vue"),
|
||||
component: () => import("@/views/admin/settings/ExecutivePositionEdit.vue"),
|
||||
meta: { type: "update", section: "settings", module: "executive_position" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
props: true,
|
||||
|
@ -183,19 +244,19 @@ const router = createRouter({
|
|||
{
|
||||
path: "communication",
|
||||
name: "admin-settings-communication-route",
|
||||
component: () => import("../views/RouterView.vue"),
|
||||
component: () => import("@/views/RouterView.vue"),
|
||||
meta: { type: "read", section: "settings", module: "communication" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
name: "admin-settings-communication",
|
||||
component: () => import("../views/admin/settings/CommunicationType.vue"),
|
||||
component: () => import("@/views/admin/settings/CommunicationType.vue"),
|
||||
},
|
||||
{
|
||||
path: ":id/edit",
|
||||
name: "admin-settings-communication-edit",
|
||||
component: () => import("../views/admin/settings/CommunicationTypeEdit.vue"),
|
||||
component: () => import("@/views/admin/settings/CommunicationTypeEdit.vue"),
|
||||
meta: { type: "update", section: "settings", module: "communication" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
props: true,
|
||||
|
@ -205,19 +266,19 @@ const router = createRouter({
|
|||
{
|
||||
path: "status",
|
||||
name: "admin-settings-membership_status-route",
|
||||
component: () => import("../views/RouterView.vue"),
|
||||
component: () => import("@/views/RouterView.vue"),
|
||||
meta: { type: "read", section: "settings", module: "membership_status" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
name: "admin-settings-membership_status",
|
||||
component: () => import("../views/admin/settings/MembershipStatus.vue"),
|
||||
component: () => import("@/views/admin/settings/MembershipStatus.vue"),
|
||||
},
|
||||
{
|
||||
path: ":id/edit",
|
||||
name: "admin-settings-membership_status-edit",
|
||||
component: () => import("../views/admin/settings/MembershipStatusEdit.vue"),
|
||||
component: () => import("@/views/admin/settings/MembershipStatusEdit.vue"),
|
||||
meta: { type: "update", section: "settings", module: "membership_status" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
props: true,
|
||||
|
@ -229,33 +290,33 @@ const router = createRouter({
|
|||
{
|
||||
path: "user",
|
||||
name: "admin-user",
|
||||
component: () => import("../views/RouterView.vue"),
|
||||
component: () => import("@/views/RouterView.vue"),
|
||||
meta: { type: "read", section: "user" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
name: "admin-user-default",
|
||||
component: () => import("../views/admin/ViewSelect.vue"),
|
||||
component: () => import("@/views/admin/ViewSelect.vue"),
|
||||
meta: { type: "read", section: "user" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
},
|
||||
{
|
||||
path: "user",
|
||||
name: "admin-user-user-route",
|
||||
component: () => import("../views/RouterView.vue"),
|
||||
component: () => import("@/views/RouterView.vue"),
|
||||
meta: { type: "read", section: "user", module: "user" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
name: "admin-user-user",
|
||||
component: () => import("../views/admin/user/User.vue"),
|
||||
component: () => import("@/views/admin/user/User.vue"),
|
||||
},
|
||||
{
|
||||
path: ":id/edit",
|
||||
name: "admin-user-user-edit",
|
||||
component: () => import("../views/admin/user/UserEdit.vue"),
|
||||
component: () => import("@/views/admin/user/UserEdit.vue"),
|
||||
meta: { type: "update", section: "user", module: "user" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
props: true,
|
||||
|
@ -263,7 +324,7 @@ const router = createRouter({
|
|||
{
|
||||
path: ":id/permission",
|
||||
name: "admin-user-user-permission",
|
||||
component: () => import("../views/admin/user/UserEditPermission.vue"),
|
||||
component: () => import("@/views/admin/user/UserEditPermission.vue"),
|
||||
meta: { type: "update", section: "user", module: "user" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
props: true,
|
||||
|
@ -271,7 +332,7 @@ const router = createRouter({
|
|||
{
|
||||
path: ":id/roles",
|
||||
name: "admin-user-user-roles",
|
||||
component: () => import("../views/admin/user/UserEditRoles.vue"),
|
||||
component: () => import("@/views/admin/user/UserEditRoles.vue"),
|
||||
meta: { type: "update", section: "user", module: "user" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
props: true,
|
||||
|
@ -281,19 +342,19 @@ const router = createRouter({
|
|||
{
|
||||
path: "role",
|
||||
name: "admin-user-role-route",
|
||||
component: () => import("../views/RouterView.vue"),
|
||||
component: () => import("@/views/RouterView.vue"),
|
||||
meta: { type: "read", section: "user", module: "role" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
name: "admin-user-role",
|
||||
component: () => import("../views/admin/user/Role.vue"),
|
||||
component: () => import("@/views/admin/user/Role.vue"),
|
||||
},
|
||||
{
|
||||
path: ":id/edit",
|
||||
name: "admin-user-role-edit",
|
||||
component: () => import("../views/admin/user/RoleEdit.vue"),
|
||||
component: () => import("@/views/admin/user/RoleEdit.vue"),
|
||||
meta: { type: "update", section: "user", module: "role" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
props: true,
|
||||
|
@ -301,7 +362,7 @@ const router = createRouter({
|
|||
{
|
||||
path: ":id/permission",
|
||||
name: "admin-user-role-permission",
|
||||
component: () => import("../views/admin/user/RoleEditPermission.vue"),
|
||||
component: () => import("@/views/admin/user/RoleEditPermission.vue"),
|
||||
meta: { type: "update", section: "user", module: "role" },
|
||||
beforeEnter: [abilityAndNavUpdate],
|
||||
props: true,
|
||||
|
@ -313,19 +374,19 @@ const router = createRouter({
|
|||
{
|
||||
path: ":pathMatch(.*)*",
|
||||
name: "admin-404",
|
||||
component: () => import("../views/notFound.vue"),
|
||||
component: () => import("@/views/notFound.vue"),
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/nopermissions",
|
||||
name: "nopermissions",
|
||||
component: () => import("../views/NoPermission.vue"),
|
||||
component: () => import("@/views/NoPermission.vue"),
|
||||
},
|
||||
{
|
||||
path: "/:pathMatch(.*)*",
|
||||
name: "404",
|
||||
component: () => import("../views/notFound.vue"),
|
||||
component: () => import("@/views/notFound.vue"),
|
||||
},
|
||||
],
|
||||
});
|
||||
|
|
19
src/router/memberGuard.ts
Normal file
19
src/router/memberGuard.ts
Normal file
|
@ -0,0 +1,19 @@
|
|||
import { useCommunicationStore } from "@/stores/admin/communication";
|
||||
import { useMemberStore } from "@/stores/admin/member";
|
||||
import { useMemberAwardStore } from "@/stores/admin/memberAward";
|
||||
import { useMemberExecutivePositionStore } from "@/stores/admin/memberExecutivePosition";
|
||||
import { useMemberQualificationStore } from "@/stores/admin/memberQualification";
|
||||
import { useMembershipStore } from "@/stores/admin/membership";
|
||||
|
||||
export async function setMemberId(to: any, from: any, next: any) {
|
||||
const member = useMemberStore();
|
||||
member.activeMember = to.params?.memberId ?? null;
|
||||
|
||||
useMembershipStore().$reset();
|
||||
useCommunicationStore().$reset();
|
||||
useMemberAwardStore().$reset();
|
||||
useMemberExecutivePositionStore().$reset();
|
||||
useMemberQualificationStore().$reset();
|
||||
|
||||
next();
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
import NProgress from "nprogress";
|
||||
import { http } from "../serverCom";
|
||||
import { http } from "@/serverCom";
|
||||
|
||||
export async function isSetup(to: any, from: any, next: any) {
|
||||
NProgress.start();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue