From 94604cda1baa8c15b06ab9d5bbd30bc57b739e0e Mon Sep 17 00:00:00 2001 From: Nicolas Drolet Date: Mon, 28 Jul 2025 12:22:51 -0400 Subject: [PATCH] fix(scaffolding): redid some folder structure to be more modular, moved some folders from modules to src, general file/folder cleanup. --- src/assets/logo-targo-green.svg | 1 + src/boot/i18n.ts | 4 +- src/{modules => }/css/app.scss | 0 src/{modules => }/css/quasar.variables.scss | 0 src/{modules => }/i18n/en-ca/index.ts | 0 src/{modules => }/i18n/index.ts | 0 src/{modules => }/layouts/MainLayout.vue | 0 .../{auth.config.ts => auth-constants.ts} | 0 .../auth.store.ts => auth/auth-store.ts} | 16 +++----- .../login-popup-authentik-button.vue} | 0 .../components/login-popup.vue} | 0 .../{api => composables}/use-auth-access.ts | 10 ++++- .../{api => composables}/use-auth-session.ts | 12 +++++- src/modules/auth/services/services-auth.ts | 30 ++++++++++++++ src/modules/auth/types/auth-interface.ts | 8 ++++ .../use-employee-dashboard.ts} | 0 .../api-dealer.ts => dashboard-constants.ts} | 0 .../{api/api-shared.ts => dashboard-store.ts} | 0 .../basic-dashboard.vue} | 0 .../_services-shared.ts} | 0 .../{index.ts => services/services-admin.ts} | 0 .../services/services-customer.ts} | 0 .../services/services-dealer.ts} | 0 .../services/services-support.ts} | 0 .../services/services-technician.ts} | 0 .../types/dashboard-types.ts} | 0 .../{api => composables}/use-expenses-api.ts | 0 .../{api => composables}/use-shift-api.ts | 0 .../{api => composables}/use-timesheet-api.ts | 0 .../services/expense-attachment-services.ts} | 0 .../services/expense-services.ts} | 0 .../services/timesheet-services.ts} | 0 ...sheet-config.ts => timesheet-constants.ts} | 0 .../timesheets/{ => types}/timesheet-types.ts | 0 .../components/{ => _shared}/user-add.vue | 0 .../components/{ => _shared}/user-update.vue | 0 .../users/components/{ => _shared}/user.vue | 0 .../customer/customer-profile.vue} | 0 .../employee/employee-profile.vue} | 0 .../supervisor-staff-profile-list-item.vue} | 0 .../supervisor-staff-profile-list.vue} | 0 .../supervisor/supervisor-staff.vue | 0 src/modules/users/composables/use-accounts.ts | 0 .../users/composables/use-user-validation.ts | 0 src/modules/users/composables/use-users.ts | 0 src/modules/users/pages/user-add-page.vue | 0 .../users/pages/user-profile-wrapper.vue | 0 src/modules/users/services/user-service.ts | 0 .../types/user-interface.ts} | 0 src/modules/users/user-store.ts | 0 .../pages/page-error.vue => pages/error.vue} | 0 .../footer-bars/footer-bar-mobile.vue | 41 +++---------------- .../footer-bars/footer-bar-web.vue | 0 .../navs => pages}/footer-bars/footer-bar.vue | 0 src/pages/help.vue | 0 src/pages/index.vue | 0 .../nav-bars/nav-bar-mobile.vue | 3 +- .../navs => pages}/nav-bars/nav-bar-web.vue | 2 +- .../navs => pages}/nav-bars/nav-bar.vue | 0 src/{modules => }/router/index.ts | 0 src/{modules => }/router/routes.ts | 0 src/shared/components/auto-logout.vue | 0 .../components/dialogs/dialog-account.vue | 0 .../dialogs/dialog-notification.vue | 0 .../dialogs/dialog-template-shifts.vue | 0 src/shared/components/language-switch.vue | 0 src/shared/types/global-interfaces.ts | 0 src/{modules => }/stores/alert.store.ts | 0 src/{modules => }/stores/index.ts | 0 src/{modules => }/stores/store-flag.d.ts | 0 src/{modules/shared => }/utils/deep-equal.ts | 0 71 files changed, 72 insertions(+), 55 deletions(-) create mode 100644 src/assets/logo-targo-green.svg rename src/{modules => }/css/app.scss (100%) rename src/{modules => }/css/quasar.variables.scss (100%) rename src/{modules => }/i18n/en-ca/index.ts (100%) rename src/{modules => }/i18n/index.ts (100%) rename src/{modules => }/layouts/MainLayout.vue (100%) rename src/modules/auth/{auth.config.ts => auth-constants.ts} (100%) rename src/modules/{stores/auth.store.ts => auth/auth-store.ts} (77%) rename src/modules/auth/{auth.router.ts => components/login-popup-authentik-button.vue} (100%) rename src/modules/{dashboard/api/api-admin.ts => auth/components/login-popup.vue} (100%) rename src/modules/auth/{api => composables}/use-auth-access.ts (68%) rename src/modules/auth/{api => composables}/use-auth-session.ts (71%) create mode 100644 src/modules/auth/services/services-auth.ts create mode 100644 src/modules/auth/types/auth-interface.ts rename src/modules/dashboard/{api/api-customer.ts => composables/use-employee-dashboard.ts} (100%) rename src/modules/dashboard/{api/api-dealer.ts => dashboard-constants.ts} (100%) rename src/modules/dashboard/{api/api-shared.ts => dashboard-store.ts} (100%) rename src/modules/dashboard/{api/api-support.ts => pages/basic-dashboard.vue} (100%) rename src/modules/dashboard/{api/api-technician.ts => services/_services-shared.ts} (100%) rename src/modules/dashboard/{index.ts => services/services-admin.ts} (100%) rename src/modules/{pages/page-help.vue => dashboard/services/services-customer.ts} (100%) rename src/modules/{pages/page-index.vue => dashboard/services/services-dealer.ts} (100%) rename src/modules/{shared/components/auto-logout.vue => dashboard/services/services-support.ts} (100%) rename src/modules/{shared/components/dialogs/dialog-account.vue => dashboard/services/services-technician.ts} (100%) rename src/modules/{shared/components/dialogs/dialog-notification.vue => dashboard/types/dashboard-types.ts} (100%) rename src/modules/timesheets/{api => composables}/use-expenses-api.ts (100%) rename src/modules/timesheets/{api => composables}/use-shift-api.ts (100%) rename src/modules/timesheets/{api => composables}/use-timesheet-api.ts (100%) rename src/modules/{shared/components/dialogs/dialog-template-shifts.vue => timesheets/services/expense-attachment-services.ts} (100%) rename src/modules/{shared/components/language-switch.vue => timesheets/services/expense-services.ts} (100%) rename src/modules/{shared/models/models-global.ts => timesheets/services/timesheet-services.ts} (100%) rename src/modules/timesheets/{timesheet-config.ts => timesheet-constants.ts} (100%) rename src/modules/timesheets/{ => types}/timesheet-types.ts (100%) rename src/modules/users/components/{ => _shared}/user-add.vue (100%) rename src/modules/users/components/{ => _shared}/user-update.vue (100%) rename src/modules/users/components/{ => _shared}/user.vue (100%) rename src/modules/users/{api/use-accounts.ts => components/customer/customer-profile.vue} (100%) rename src/modules/users/{api/use-users.ts => components/employee/employee-profile.vue} (100%) rename src/modules/users/{user-config.ts => components/supervisor/supervisor-staff-profile-list-item.vue} (100%) rename src/modules/users/{user-validation.ts => components/supervisor/supervisor-staff-profile-list.vue} (100%) create mode 100644 src/modules/users/components/supervisor/supervisor-staff.vue create mode 100644 src/modules/users/composables/use-accounts.ts create mode 100644 src/modules/users/composables/use-user-validation.ts create mode 100644 src/modules/users/composables/use-users.ts create mode 100644 src/modules/users/pages/user-add-page.vue create mode 100644 src/modules/users/pages/user-profile-wrapper.vue create mode 100644 src/modules/users/services/user-service.ts rename src/modules/{shared/models/models-user.ts => users/types/user-interface.ts} (100%) create mode 100644 src/modules/users/user-store.ts rename src/{modules/pages/page-error.vue => pages/error.vue} (100%) rename src/{modules/shared/components/navs => pages}/footer-bars/footer-bar-mobile.vue (67%) rename src/{modules/shared/components/navs => pages}/footer-bars/footer-bar-web.vue (100%) rename src/{modules/shared/components/navs => pages}/footer-bars/footer-bar.vue (100%) create mode 100644 src/pages/help.vue create mode 100644 src/pages/index.vue rename src/{modules/shared/components/navs => pages}/nav-bars/nav-bar-mobile.vue (94%) rename src/{modules/shared/components/navs => pages}/nav-bars/nav-bar-web.vue (98%) rename src/{modules/shared/components/navs => pages}/nav-bars/nav-bar.vue (100%) rename src/{modules => }/router/index.ts (100%) rename src/{modules => }/router/routes.ts (100%) create mode 100644 src/shared/components/auto-logout.vue create mode 100644 src/shared/components/dialogs/dialog-account.vue create mode 100644 src/shared/components/dialogs/dialog-notification.vue create mode 100644 src/shared/components/dialogs/dialog-template-shifts.vue create mode 100644 src/shared/components/language-switch.vue create mode 100644 src/shared/types/global-interfaces.ts rename src/{modules => }/stores/alert.store.ts (100%) rename src/{modules => }/stores/index.ts (100%) rename src/{modules => }/stores/store-flag.d.ts (100%) rename src/{modules/shared => }/utils/deep-equal.ts (100%) diff --git a/src/assets/logo-targo-green.svg b/src/assets/logo-targo-green.svg new file mode 100644 index 0000000..a3e9f51 --- /dev/null +++ b/src/assets/logo-targo-green.svg @@ -0,0 +1 @@ + diff --git a/src/boot/i18n.ts b/src/boot/i18n.ts index 4b58b2f..c351b01 100644 --- a/src/boot/i18n.ts +++ b/src/boot/i18n.ts @@ -5,7 +5,7 @@ import messages from 'src/modules/i18n'; export type MessageLanguages = keyof typeof messages; // Type-define 'en-US' as the master schema for the resource -export type MessageSchema = typeof messages['en-CA']; +export type MessageSchema = typeof messages['en-ca']; // See https://vue-i18n.intlify.dev/guide/advanced/typescript.html#global-resource-schema-type-definition /* eslint-disable @typescript-eslint/no-empty-object-type */ @@ -23,7 +23,7 @@ declare module 'vue-i18n' { export default defineBoot(({ app }) => { const i18n = createI18n<{ message: MessageSchema }, MessageLanguages>({ - locale: 'en-CA', + locale: 'en-ca', legacy: false, messages, }); diff --git a/src/modules/css/app.scss b/src/css/app.scss similarity index 100% rename from src/modules/css/app.scss rename to src/css/app.scss diff --git a/src/modules/css/quasar.variables.scss b/src/css/quasar.variables.scss similarity index 100% rename from src/modules/css/quasar.variables.scss rename to src/css/quasar.variables.scss diff --git a/src/modules/i18n/en-ca/index.ts b/src/i18n/en-ca/index.ts similarity index 100% rename from src/modules/i18n/en-ca/index.ts rename to src/i18n/en-ca/index.ts diff --git a/src/modules/i18n/index.ts b/src/i18n/index.ts similarity index 100% rename from src/modules/i18n/index.ts rename to src/i18n/index.ts diff --git a/src/modules/layouts/MainLayout.vue b/src/layouts/MainLayout.vue similarity index 100% rename from src/modules/layouts/MainLayout.vue rename to src/layouts/MainLayout.vue diff --git a/src/modules/auth/auth.config.ts b/src/modules/auth/auth-constants.ts similarity index 100% rename from src/modules/auth/auth.config.ts rename to src/modules/auth/auth-constants.ts diff --git a/src/modules/stores/auth.store.ts b/src/modules/auth/auth-store.ts similarity index 77% rename from src/modules/stores/auth.store.ts rename to src/modules/auth/auth-store.ts index ce36a1c..429a120 100644 --- a/src/modules/stores/auth.store.ts +++ b/src/modules/auth/auth-store.ts @@ -1,27 +1,21 @@ import { defineStore } from "pinia"; import router from "src/modules/router"; import { api } from "src/boot/axios"; -import { User } from "../shared/components/models/models-user"; +import { User } from "src/modules/users/types/user-interface"; +import { AuthState } from "./types/auth-interface"; -interface AuthState { - token: string | null; - user: User; - loading: boolean; - error: string | null; -} - export const useAuthStore = defineStore('auth', { state: (): AuthState => ({ - token: null, + token: "", user: { firstName: 'Guest', lastName: 'Guest', email: 'guest@guest.com', role: 'guest' - }, + } as User, loading: false, - error: null, + error: "", }), getters: { diff --git a/src/modules/auth/auth.router.ts b/src/modules/auth/components/login-popup-authentik-button.vue similarity index 100% rename from src/modules/auth/auth.router.ts rename to src/modules/auth/components/login-popup-authentik-button.vue diff --git a/src/modules/dashboard/api/api-admin.ts b/src/modules/auth/components/login-popup.vue similarity index 100% rename from src/modules/dashboard/api/api-admin.ts rename to src/modules/auth/components/login-popup.vue diff --git a/src/modules/auth/api/use-auth-access.ts b/src/modules/auth/composables/use-auth-access.ts similarity index 68% rename from src/modules/auth/api/use-auth-access.ts rename to src/modules/auth/composables/use-auth-access.ts index 6261a1a..811d99a 100644 --- a/src/modules/auth/api/use-auth-access.ts +++ b/src/modules/auth/composables/use-auth-access.ts @@ -1,4 +1,4 @@ -import { useAuthStore } from "src/modules/stores/auth.store"; +import { useAuthStore } from "src/modules/auth/auth-store"; export const useAuthAccess = () => { const authStore = useAuthStore(); @@ -14,4 +14,10 @@ export const useAuthAccess = () => { const forgotPassword = async (email: string) => { return authStore.forgotPassword(email); }; -} \ No newline at end of file + + return { + isLoggedIn, + isAuthorizedUser, + forgotPassword, + }; +}; \ No newline at end of file diff --git a/src/modules/auth/api/use-auth-session.ts b/src/modules/auth/composables/use-auth-session.ts similarity index 71% rename from src/modules/auth/api/use-auth-session.ts rename to src/modules/auth/composables/use-auth-session.ts index 77fe5cb..7f3abbe 100644 --- a/src/modules/auth/api/use-auth-session.ts +++ b/src/modules/auth/composables/use-auth-session.ts @@ -1,4 +1,4 @@ -import { useAuthStore } from "src/modules/stores/auth.store"; +import { useAuthStore } from "src/modules/auth/auth-store"; export const useAuthSession = () => { const authStore = useAuthStore(); @@ -22,4 +22,12 @@ export const useAuthSession = () => { const setAuthToken = (token: string) => { return authStore.setAuthToken( token ); }; -} \ No newline at end of file + + return { + login, + oidcLogin, + logout, + setUser, + setAuthToken, + }; +}; \ No newline at end of file diff --git a/src/modules/auth/services/services-auth.ts b/src/modules/auth/services/services-auth.ts new file mode 100644 index 0000000..9e7a54e --- /dev/null +++ b/src/modules/auth/services/services-auth.ts @@ -0,0 +1,30 @@ +import { api } from 'src/boot/axios'; + +export const AuthService = { + // Will likely be deprecated and relegated to Authentik + login: (credentials: { email: string; password: string }) => { + // TODO: possibly add some kind of login logic, but will most likely be redirected + // to Authentik as well. + api.post('/auth/login', credentials) + }, + + oidcLogin: () => { + // TODO: OIDC login logic + api.post('/auth/oidclogin'); + }, + + logout: () => { + // TODO: logout logic + api.post('/auth/logout') + }, + + refreshToken: () => { + // TODO: token refresh logic + api.post('/auth/refresh') + }, + + getProfile: () => { + // TODO: user info fetch logic + api.get('/auth/me') + }, +}; diff --git a/src/modules/auth/types/auth-interface.ts b/src/modules/auth/types/auth-interface.ts new file mode 100644 index 0000000..e1bc12c --- /dev/null +++ b/src/modules/auth/types/auth-interface.ts @@ -0,0 +1,8 @@ +import { User } from "src/modules/users/types/user-interface"; + +export interface AuthState { + token: string; + user: User; + loading: boolean; + error: string; +} diff --git a/src/modules/dashboard/api/api-customer.ts b/src/modules/dashboard/composables/use-employee-dashboard.ts similarity index 100% rename from src/modules/dashboard/api/api-customer.ts rename to src/modules/dashboard/composables/use-employee-dashboard.ts diff --git a/src/modules/dashboard/api/api-dealer.ts b/src/modules/dashboard/dashboard-constants.ts similarity index 100% rename from src/modules/dashboard/api/api-dealer.ts rename to src/modules/dashboard/dashboard-constants.ts diff --git a/src/modules/dashboard/api/api-shared.ts b/src/modules/dashboard/dashboard-store.ts similarity index 100% rename from src/modules/dashboard/api/api-shared.ts rename to src/modules/dashboard/dashboard-store.ts diff --git a/src/modules/dashboard/api/api-support.ts b/src/modules/dashboard/pages/basic-dashboard.vue similarity index 100% rename from src/modules/dashboard/api/api-support.ts rename to src/modules/dashboard/pages/basic-dashboard.vue diff --git a/src/modules/dashboard/api/api-technician.ts b/src/modules/dashboard/services/_services-shared.ts similarity index 100% rename from src/modules/dashboard/api/api-technician.ts rename to src/modules/dashboard/services/_services-shared.ts diff --git a/src/modules/dashboard/index.ts b/src/modules/dashboard/services/services-admin.ts similarity index 100% rename from src/modules/dashboard/index.ts rename to src/modules/dashboard/services/services-admin.ts diff --git a/src/modules/pages/page-help.vue b/src/modules/dashboard/services/services-customer.ts similarity index 100% rename from src/modules/pages/page-help.vue rename to src/modules/dashboard/services/services-customer.ts diff --git a/src/modules/pages/page-index.vue b/src/modules/dashboard/services/services-dealer.ts similarity index 100% rename from src/modules/pages/page-index.vue rename to src/modules/dashboard/services/services-dealer.ts diff --git a/src/modules/shared/components/auto-logout.vue b/src/modules/dashboard/services/services-support.ts similarity index 100% rename from src/modules/shared/components/auto-logout.vue rename to src/modules/dashboard/services/services-support.ts diff --git a/src/modules/shared/components/dialogs/dialog-account.vue b/src/modules/dashboard/services/services-technician.ts similarity index 100% rename from src/modules/shared/components/dialogs/dialog-account.vue rename to src/modules/dashboard/services/services-technician.ts diff --git a/src/modules/shared/components/dialogs/dialog-notification.vue b/src/modules/dashboard/types/dashboard-types.ts similarity index 100% rename from src/modules/shared/components/dialogs/dialog-notification.vue rename to src/modules/dashboard/types/dashboard-types.ts diff --git a/src/modules/timesheets/api/use-expenses-api.ts b/src/modules/timesheets/composables/use-expenses-api.ts similarity index 100% rename from src/modules/timesheets/api/use-expenses-api.ts rename to src/modules/timesheets/composables/use-expenses-api.ts diff --git a/src/modules/timesheets/api/use-shift-api.ts b/src/modules/timesheets/composables/use-shift-api.ts similarity index 100% rename from src/modules/timesheets/api/use-shift-api.ts rename to src/modules/timesheets/composables/use-shift-api.ts diff --git a/src/modules/timesheets/api/use-timesheet-api.ts b/src/modules/timesheets/composables/use-timesheet-api.ts similarity index 100% rename from src/modules/timesheets/api/use-timesheet-api.ts rename to src/modules/timesheets/composables/use-timesheet-api.ts diff --git a/src/modules/shared/components/dialogs/dialog-template-shifts.vue b/src/modules/timesheets/services/expense-attachment-services.ts similarity index 100% rename from src/modules/shared/components/dialogs/dialog-template-shifts.vue rename to src/modules/timesheets/services/expense-attachment-services.ts diff --git a/src/modules/shared/components/language-switch.vue b/src/modules/timesheets/services/expense-services.ts similarity index 100% rename from src/modules/shared/components/language-switch.vue rename to src/modules/timesheets/services/expense-services.ts diff --git a/src/modules/shared/models/models-global.ts b/src/modules/timesheets/services/timesheet-services.ts similarity index 100% rename from src/modules/shared/models/models-global.ts rename to src/modules/timesheets/services/timesheet-services.ts diff --git a/src/modules/timesheets/timesheet-config.ts b/src/modules/timesheets/timesheet-constants.ts similarity index 100% rename from src/modules/timesheets/timesheet-config.ts rename to src/modules/timesheets/timesheet-constants.ts diff --git a/src/modules/timesheets/timesheet-types.ts b/src/modules/timesheets/types/timesheet-types.ts similarity index 100% rename from src/modules/timesheets/timesheet-types.ts rename to src/modules/timesheets/types/timesheet-types.ts diff --git a/src/modules/users/components/user-add.vue b/src/modules/users/components/_shared/user-add.vue similarity index 100% rename from src/modules/users/components/user-add.vue rename to src/modules/users/components/_shared/user-add.vue diff --git a/src/modules/users/components/user-update.vue b/src/modules/users/components/_shared/user-update.vue similarity index 100% rename from src/modules/users/components/user-update.vue rename to src/modules/users/components/_shared/user-update.vue diff --git a/src/modules/users/components/user.vue b/src/modules/users/components/_shared/user.vue similarity index 100% rename from src/modules/users/components/user.vue rename to src/modules/users/components/_shared/user.vue diff --git a/src/modules/users/api/use-accounts.ts b/src/modules/users/components/customer/customer-profile.vue similarity index 100% rename from src/modules/users/api/use-accounts.ts rename to src/modules/users/components/customer/customer-profile.vue diff --git a/src/modules/users/api/use-users.ts b/src/modules/users/components/employee/employee-profile.vue similarity index 100% rename from src/modules/users/api/use-users.ts rename to src/modules/users/components/employee/employee-profile.vue diff --git a/src/modules/users/user-config.ts b/src/modules/users/components/supervisor/supervisor-staff-profile-list-item.vue similarity index 100% rename from src/modules/users/user-config.ts rename to src/modules/users/components/supervisor/supervisor-staff-profile-list-item.vue diff --git a/src/modules/users/user-validation.ts b/src/modules/users/components/supervisor/supervisor-staff-profile-list.vue similarity index 100% rename from src/modules/users/user-validation.ts rename to src/modules/users/components/supervisor/supervisor-staff-profile-list.vue diff --git a/src/modules/users/components/supervisor/supervisor-staff.vue b/src/modules/users/components/supervisor/supervisor-staff.vue new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/users/composables/use-accounts.ts b/src/modules/users/composables/use-accounts.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/users/composables/use-user-validation.ts b/src/modules/users/composables/use-user-validation.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/users/composables/use-users.ts b/src/modules/users/composables/use-users.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/users/pages/user-add-page.vue b/src/modules/users/pages/user-add-page.vue new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/users/pages/user-profile-wrapper.vue b/src/modules/users/pages/user-profile-wrapper.vue new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/users/services/user-service.ts b/src/modules/users/services/user-service.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/shared/models/models-user.ts b/src/modules/users/types/user-interface.ts similarity index 100% rename from src/modules/shared/models/models-user.ts rename to src/modules/users/types/user-interface.ts diff --git a/src/modules/users/user-store.ts b/src/modules/users/user-store.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/pages/page-error.vue b/src/pages/error.vue similarity index 100% rename from src/modules/pages/page-error.vue rename to src/pages/error.vue diff --git a/src/modules/shared/components/navs/footer-bars/footer-bar-mobile.vue b/src/pages/footer-bars/footer-bar-mobile.vue similarity index 67% rename from src/modules/shared/components/navs/footer-bars/footer-bar-mobile.vue rename to src/pages/footer-bars/footer-bar-mobile.vue index e7a7812..eff9296 100644 --- a/src/modules/shared/components/navs/footer-bars/footer-bar-mobile.vue +++ b/src/pages/footer-bars/footer-bar-mobile.vue @@ -1,7 +1,7 @@