From 411c1716b2b8d864dfffd6e832f259e66c28d342 Mon Sep 17 00:00:00 2001 From: Matheus Andre Date: Mon, 5 Jan 2026 14:47:31 -0300 Subject: [PATCH 1/4] feat: Implement user sign-up page with form validation and add JWT token interceptor for API requests. --- .../webui/src/app/pages/sign/sign-up/sign-up.component.ts | 8 ++++---- timeless-api/src/main/webui/src/app/token.interceptor.ts | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/timeless-api/src/main/webui/src/app/pages/sign/sign-up/sign-up.component.ts b/timeless-api/src/main/webui/src/app/pages/sign/sign-up/sign-up.component.ts index 41c4dd2..aadda9f 100644 --- a/timeless-api/src/main/webui/src/app/pages/sign/sign-up/sign-up.component.ts +++ b/timeless-api/src/main/webui/src/app/pages/sign/sign-up/sign-up.component.ts @@ -11,7 +11,7 @@ import { InputText } from 'primeng/inputtext'; import { Router, RouterLink } from '@angular/router'; import { FloatLabel } from 'primeng/floatlabel'; import { TimelessApiService } from '../../../timeless-api.service'; -import { catchError } from 'rxjs'; +import { catchError, EMPTY } from 'rxjs'; import { ToastService } from '../../../services/toast.service'; @Component({ @@ -45,7 +45,7 @@ export class SignUpComponent { private readonly timelessApiService: TimelessApiService, private readonly router: Router, private readonly toast: ToastService, - ) {} + ) { } onSubmit() { if (this.form.valid) { @@ -53,10 +53,10 @@ export class SignUpComponent { .signUp(this.form.value) .pipe( catchError((err: any) => { - if (err.error.message) { + if (err.error?.message) { this.toast.error('Conflito', err.error.message); } - return err; + return EMPTY; }), ) .subscribe((_) => { diff --git a/timeless-api/src/main/webui/src/app/token.interceptor.ts b/timeless-api/src/main/webui/src/app/token.interceptor.ts index 5308ad4..b32d318 100644 --- a/timeless-api/src/main/webui/src/app/token.interceptor.ts +++ b/timeless-api/src/main/webui/src/app/token.interceptor.ts @@ -4,8 +4,10 @@ import { timelessLocalStorageKey } from './constants'; const allowedPaths = [ '/api/sign-in', '/api/sign-out', + '/api/sign-up', 'api/sign-in', 'api/sign-out', + 'api/sign-up', ]; export const tokenInterceptor: HttpInterceptorFn = (req, next) => { From ea9f25a21a94c768425f70140097662a38c4c14a Mon Sep 17 00:00:00 2001 From: Matheus Andre Date: Mon, 5 Jan 2026 14:51:55 -0300 Subject: [PATCH 2/4] fix: format constructor method in SignUpComponent --- .../main/webui/src/app/pages/sign/sign-up/sign-up.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/timeless-api/src/main/webui/src/app/pages/sign/sign-up/sign-up.component.ts b/timeless-api/src/main/webui/src/app/pages/sign/sign-up/sign-up.component.ts index aadda9f..b52310c 100644 --- a/timeless-api/src/main/webui/src/app/pages/sign/sign-up/sign-up.component.ts +++ b/timeless-api/src/main/webui/src/app/pages/sign/sign-up/sign-up.component.ts @@ -45,7 +45,7 @@ export class SignUpComponent { private readonly timelessApiService: TimelessApiService, private readonly router: Router, private readonly toast: ToastService, - ) { } + ) {} onSubmit() { if (this.form.valid) { From 15bd8806380a729e9e89042af2e8c9613ef28a70 Mon Sep 17 00:00:00 2001 From: Matheus Andre Date: Sat, 24 Jan 2026 20:50:10 -0300 Subject: [PATCH 3/4] fix: remove sign-out --- timeless-api/src/main/webui/src/app/token.interceptor.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/timeless-api/src/main/webui/src/app/token.interceptor.ts b/timeless-api/src/main/webui/src/app/token.interceptor.ts index b32d318..4a8df59 100644 --- a/timeless-api/src/main/webui/src/app/token.interceptor.ts +++ b/timeless-api/src/main/webui/src/app/token.interceptor.ts @@ -3,10 +3,9 @@ import { timelessLocalStorageKey } from './constants'; const allowedPaths = [ '/api/sign-in', - '/api/sign-out', '/api/sign-up', 'api/sign-in', - 'api/sign-out', + , 'api/sign-up', ]; From 3e09a02396ea3769b7f45c1a1dba06a460b590b5 Mon Sep 17 00:00:00 2001 From: Matheus Andre Date: Sat, 24 Jan 2026 21:03:23 -0300 Subject: [PATCH 4/4] fix: remove , --- timeless-api/src/main/webui/src/app/token.interceptor.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/timeless-api/src/main/webui/src/app/token.interceptor.ts b/timeless-api/src/main/webui/src/app/token.interceptor.ts index 4a8df59..2ff60e2 100644 --- a/timeless-api/src/main/webui/src/app/token.interceptor.ts +++ b/timeless-api/src/main/webui/src/app/token.interceptor.ts @@ -5,7 +5,6 @@ const allowedPaths = [ '/api/sign-in', '/api/sign-up', 'api/sign-in', - , 'api/sign-up', ];