From 68dd9599a94f2ed282bcdf36454565482159ab06 Mon Sep 17 00:00:00 2001 From: matthieu Date: Sun, 15 Mar 2026 19:42:53 +0100 Subject: [PATCH] feat(auth) : redirect client users to /portal after login and extract ticket helpers composable Co-Authored-By: Claude Sonnet 4.6 --- .../composables/useClientTicketHelpers.ts | 29 +++++ frontend/pages/login.vue | 3 +- frontend/pages/portal/projects/[id]/index.vue | 121 ++++++++++++++++++ 3 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 frontend/composables/useClientTicketHelpers.ts create mode 100644 frontend/pages/portal/projects/[id]/index.vue diff --git a/frontend/composables/useClientTicketHelpers.ts b/frontend/composables/useClientTicketHelpers.ts new file mode 100644 index 0000000..2742eef --- /dev/null +++ b/frontend/composables/useClientTicketHelpers.ts @@ -0,0 +1,29 @@ +export function useClientTicketHelpers() { + function typeBadgeClass(type: string): string { + switch (type) { + case 'bug': return 'bg-red-500' + case 'improvement': return 'bg-blue-500' + default: return 'bg-neutral-500' + } + } + + function statusBadgeClass(status: string): string { + switch (status) { + case 'new': return 'bg-blue-100 text-blue-700' + case 'in_progress': return 'bg-yellow-100 text-yellow-700' + case 'done': return 'bg-green-100 text-green-700' + case 'rejected': return 'bg-red-100 text-red-700' + default: return 'bg-neutral-100 text-neutral-700' + } + } + + function formatDate(iso: string): string { + return new Date(iso).toLocaleDateString('fr-FR', { + day: 'numeric', + month: 'short', + year: 'numeric', + }) + } + + return { typeBadgeClass, statusBadgeClass, formatDate } +} diff --git a/frontend/pages/login.vue b/frontend/pages/login.vue index a87da44..41fb87c 100644 --- a/frontend/pages/login.vue +++ b/frontend/pages/login.vue @@ -63,7 +63,8 @@ const handleSubmit = async () => { try { await auth.login(username.value, password.value) - await router.push('/') + const isClient = auth.user?.roles?.includes('ROLE_CLIENT') ?? false + await router.push(isClient ? '/portal' : '/') } finally { isSubmitting.value = false } diff --git a/frontend/pages/portal/projects/[id]/index.vue b/frontend/pages/portal/projects/[id]/index.vue new file mode 100644 index 0000000..54bd725 --- /dev/null +++ b/frontend/pages/portal/projects/[id]/index.vue @@ -0,0 +1,121 @@ + + +