From c1c0faeaf11703d2103141a49345e99095c18206 Mon Sep 17 00:00:00 2001 From: Nicolas Drolet Date: Wed, 15 Oct 2025 17:06:51 -0400 Subject: [PATCH] BREAKING(login): implement full auth process using Authentik, remove files containing deprecated code --- src/boot/axios.ts | 27 ++-- src/i18n/en-ca/index.ts | 4 + src/i18n/fr-ca/index.ts | 4 + .../main-layout-header-bar-notification.vue | 41 +++--- .../components/main-layout-left-drawer.vue | 135 +++++++++++++----- .../auth/components/login-dev-bypass.vue | 34 ----- src/modules/auth/composables/use-auth-api.ts | 11 -- src/modules/auth/pages/auth-login.vue | 4 - src/modules/auth/services/services-auth.ts | 16 +-- .../shared/components/generic-loader.vue | 27 ++++ src/modules/shared/models/user.models.ts | 23 +-- .../details-crud-dialog-chart-expenses.vue | 2 + .../components/details-crud-dialog.vue | 24 ---- .../components/overview-list-item.vue | 6 +- .../components/overview-list.vue | 6 +- .../composables/use-timesheet-approval-api.ts | 2 +- ...models.ts => timesheet-overview.models.ts} | 6 +- .../services/timesheet-approval-service.ts | 2 +- .../components/expense-crud-dialog-form.vue | 6 +- .../expense-crud-dialog-list-item.vue | 6 +- .../components/expense-crud-dialog-list.vue | 2 +- .../shift-crud-dialog-add-update-shift.vue | 43 +++--- .../components/shift-crud-dialog.vue | 127 ---------------- .../components/shift-list-header.vue | 33 ----- .../timesheets/components/shift-list-row.vue | 28 +--- .../timesheets/components/shift-list.vue | 27 +--- .../components/timesheet-wrapper.vue | 112 ++++++++------- .../composables/api/use-expense-api.ts | 41 ------ .../composables/api/use-shift-api.ts | 85 ----------- .../timesheets/composables/use-expense-api.ts | 28 ++++ .../composables/use-expense-draft.ts | 36 ----- .../composables/use-expense-form.ts | 21 --- .../composables/use-expense-items.ts | 59 -------- .../{api => }/use-timesheet-api.ts | 0 .../timesheets/constants/expense.constants.ts | 1 - .../timesheets/constants/shift.constants.ts | 3 - .../timesheets/models/expense.models.ts | 37 ++--- ...dation.ts => expense.validation.models.ts} | 1 + .../models/pay-period-details.models.ts | 78 ---------- src/modules/timesheets/models/shift.models.ts | 16 +-- .../timesheets/models/timesheet.models.ts | 36 +++++ src/modules/timesheets/models/ui.models.ts | 6 - .../timesheets/services/timesheet-service.ts | 39 +++-- src/modules/timesheets/utils/expense.util.ts | 53 ++----- .../timesheets/utils/expenses-validators.ts | 130 ----------------- src/modules/timesheets/utils/shift.util.ts | 18 --- .../timesheets/utils/timesheet-format.util.ts | 17 --- src/pages/timesheet-page.vue | 6 +- src/stores/auth-store.ts | 61 ++++---- src/stores/shift-store.ts | 87 ----------- src/stores/timesheet-store.ts | 8 +- 51 files changed, 446 insertions(+), 1179 deletions(-) delete mode 100644 src/modules/auth/components/login-dev-bypass.vue create mode 100644 src/modules/shared/components/generic-loader.vue rename src/modules/timesheet-approval/models/{pay-period-overview.models.ts => timesheet-overview.models.ts} (91%) delete mode 100644 src/modules/timesheets/components/shift-crud-dialog.vue delete mode 100644 src/modules/timesheets/components/shift-list-header.vue delete mode 100644 src/modules/timesheets/composables/api/use-expense-api.ts delete mode 100644 src/modules/timesheets/composables/api/use-shift-api.ts create mode 100644 src/modules/timesheets/composables/use-expense-api.ts delete mode 100644 src/modules/timesheets/composables/use-expense-draft.ts delete mode 100644 src/modules/timesheets/composables/use-expense-form.ts delete mode 100644 src/modules/timesheets/composables/use-expense-items.ts rename src/modules/timesheets/composables/{api => }/use-timesheet-api.ts (100%) delete mode 100644 src/modules/timesheets/constants/expense.constants.ts delete mode 100644 src/modules/timesheets/constants/shift.constants.ts rename src/modules/timesheets/models/{expense.validation.ts => expense.validation.models.ts} (97%) delete mode 100644 src/modules/timesheets/models/pay-period-details.models.ts create mode 100644 src/modules/timesheets/models/timesheet.models.ts delete mode 100644 src/modules/timesheets/models/ui.models.ts delete mode 100644 src/modules/timesheets/utils/expenses-validators.ts delete mode 100644 src/modules/timesheets/utils/shift.util.ts delete mode 100644 src/modules/timesheets/utils/timesheet-format.util.ts delete mode 100644 src/stores/shift-store.ts diff --git a/src/boot/axios.ts b/src/boot/axios.ts index 0ad51d2..68f13dd 100644 --- a/src/boot/axios.ts +++ b/src/boot/axios.ts @@ -2,10 +2,10 @@ import { defineBoot } from '#q-app/wrappers'; import axios, { type AxiosInstance } from 'axios'; declare module 'vue' { - interface ComponentCustomProperties { - $axios: AxiosInstance; - $api: AxiosInstance; - } + interface ComponentCustomProperties { + $axios: AxiosInstance; + $api: AxiosInstance; + } } // Be careful when using SSR for cross-request state pollution @@ -14,18 +14,21 @@ declare module 'vue' { // good idea to move this instance creation inside of the // "export default () => {}" function below (which runs individually // for each client) -const api = axios.create({ baseURL: import.meta.env.VITE_TARGO_BACKEND_AUTH_URL }); +const api = axios.create({ + baseURL: import.meta.env.VITE_TARGO_BACKEND_AUTH_URL, + withCredentials: true +}); export default defineBoot(({ app }) => { - // for use inside Vue files (Options API) through this.$axios and this.$api + // for use inside Vue files (Options API) through this.$axios and this.$api - app.config.globalProperties.$axios = axios; - // ^ ^ ^ this will allow you to use this.$axios (for Vue Options API form) - // so you won't necessarily have to import axios in each vue file + app.config.globalProperties.$axios = axios; + // ^ ^ ^ this will allow you to use this.$axios (for Vue Options API form) + // so you won't necessarily have to import axios in each vue file - app.config.globalProperties.$api = api; - // ^ ^ ^ this will allow you to use this.$api (for Vue Options API form) - // so you can easily perform requests against your app's API + app.config.globalProperties.$api = api; + // ^ ^ ^ this will allow you to use this.$api (for Vue Options API form) + // so you can easily perform requests against your app's API }); export { api }; diff --git a/src/i18n/en-ca/index.ts b/src/i18n/en-ca/index.ts index 922125b..ae81e67 100644 --- a/src/i18n/en-ca/index.ts +++ b/src/i18n/en-ca/index.ts @@ -25,6 +25,10 @@ export default { tooltip: { coming_soon: "coming soon!", }, + error: { + login_failed: "Failed to login", + popups_blocked: "Popups are blocked on this device", + }, }, nav_bar: { diff --git a/src/i18n/fr-ca/index.ts b/src/i18n/fr-ca/index.ts index 213d174..c4ba08a 100644 --- a/src/i18n/fr-ca/index.ts +++ b/src/i18n/fr-ca/index.ts @@ -25,6 +25,10 @@ export default { tooltip: { coming_soon: "à venir!", }, + error: { + login_failed: "Échec à la connexion", + popups_blocked: "Les fenêtres contextuelles sont bloqués sur cet appareil", + }, }, nav_bar: { diff --git a/src/layouts/components/main-layout-header-bar-notification.vue b/src/layouts/components/main-layout-header-bar-notification.vue index 89e7edf..fbef392 100644 --- a/src/layouts/components/main-layout-header-bar-notification.vue +++ b/src/layouts/components/main-layout-header-bar-notification.vue @@ -1,26 +1,33 @@ - \ No newline at end of file diff --git a/src/layouts/components/main-layout-left-drawer.vue b/src/layouts/components/main-layout-left-drawer.vue index acea4f6..e8c1259 100644 --- a/src/layouts/components/main-layout-left-drawer.vue +++ b/src/layouts/components/main-layout-left-drawer.vue @@ -1,24 +1,27 @@ -