refactor: throw proper error on registration conflict, handle properly #187

Merged
ptran merged 3 commits from refactor-register into main 2025-05-14 09:24:02 +00:00
Showing only changes of commit e7e43839eb - Show all commits

View file

@ -16,7 +16,7 @@ export class RegisterComponent {
registerForm: FormGroup;
errorMessage = signal<string>('');
isLoading = signal<boolean>(false);
fieldErrors = signal<{ [key: string]: string }>({});
fieldErrors = signal<Record<string, string>>({});
constructor(
private fb: FormBuilder,
@ -51,7 +51,6 @@ export class RegisterComponent {
this.authService.register(registerRequest).subscribe({
next: () => {
// After registration, log in the user
this.authService
.login({
usernameOrEmail: registerRequest.email,
@ -73,18 +72,20 @@ export class RegisterComponent {
this.isLoading.set(false);
if (err.status === 409) {
const errorResponse = err.error;
if (errorResponse?.message === 'Email is already in use') {
this.fieldErrors.update((errors) => ({
...errors,
email: 'Diese E-Mail-Adresse wird bereits verwendet.',
}));
} else if (errorResponse?.message === 'Username is already taken') {
this.fieldErrors.update((errors) => ({
...errors,
username: 'Dieser Benutzername ist bereits vergeben.',
}));
const message = err.error?.message;
switch (message) {
case 'Email is already in use':
this.fieldErrors.update(errors => ({
...errors,
email: 'Diese E-Mail-Adresse wird bereits verwendet.'
}));
break;
case 'Username is already taken':
this.fieldErrors.update(errors => ({
...errors,
username: 'Dieser Benutzername ist bereits vergeben.'
}));
break;
}
} else {
this.errorMessage.set(err.error?.message || 'Failed to register. Please try again.');