Skip to content

Commit 095ca84

Browse files
committed
Fix error handling
Realised that the error interceptor was mishandling the errors. Now it will throw an Error object with properties .message and .cause. Where message is the original error.message, and cause is just the original error itself.
1 parent f23b4fd commit 095ca84

File tree

4 files changed

+17
-17
lines changed

4 files changed

+17
-17
lines changed

frontend/src/_helpers/interceptors/error.interceptor.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,10 @@ export class ErrorInterceptor implements HttpInterceptor {
1212
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
1313
return next.handle(request).pipe(
1414
catchError(err => {
15-
if ([401, 403].includes(err.status)) {
16-
// auto logout if 401 Unauthorized or 403 Forbidden response returned from api
17-
this.authenticationService.logout();
18-
}
15+
console.error(err);
1916

20-
const error = err.error.message || err.statusText;
21-
return throwError(() => new Error(error));
17+
const errorMessage = err.error.message;
18+
return throwError(() => new Error(errorMessage, {cause: err}));
2219
}),
2320
);
2421
}

frontend/src/_services/authentication.service.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export class AuthenticationService {
2626
}
2727

2828
login(username: string, password: string) {
29+
console.log('login', `${environment.UserServiceApiUrl}/auth/login`);
2930
return this.http
3031
.post<UServRes>(`${environment.UserServiceApiUrl}/auth/login`,
3132
{ username: username, password: password },

frontend/src/app/account/login.component.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,16 @@ export class LoginComponent {
5252
this.router.navigate([returnUrl]);
5353
},
5454
error: error => {
55-
console.dir(error);
5655
this.isProcessingLogin = false;
56+
const status = error.cause.status;
5757
let errorMessage = 'An unknown error occurred';
58-
if (error.status === 400) {
58+
if (status === 400) {
5959
errorMessage = 'Missing Fields';
6060
}
61-
else if (error.status === 401) {
61+
else if (status === 401) {
6262
errorMessage = 'Invalid username or password';
6363
}
64-
else if (error.status === 500) {
64+
else if (status === 500) {
6565
errorMessage = 'Database Server Error';
6666
}
6767
this.messageService.add({ severity: 'error', summary: 'Log In Error', detail: errorMessage });

frontend/src/app/account/register.component.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,15 +105,17 @@ export class RegisterComponent {
105105
},
106106
// error handling for registration because we assume there will be no errors with auto login
107107
error: error => {
108-
console.log('A registration error occured');
109-
console.log(error, error.error);
110108
this.isProcessingRegistration = false;
109+
const status = error.cause.status;
111110
let errorMessage = 'An unknown error occurred';
112-
// Check if error has a message property
113-
if (error && error.error && error.error.message) {
114-
errorMessage = error.error.message;
115-
} else if (error && error.message) {
116-
errorMessage = error.message;
111+
if (status === 400) {
112+
errorMessage = 'Missing Fields';
113+
}
114+
else if (status === 409) {
115+
errorMessage = 'Username or Password already exists';
116+
}
117+
else if (status === 500) {
118+
errorMessage = 'Database Server Error';
117119
}
118120
this.messageService.add({ severity: 'error', summary: 'Log In Error', detail: errorMessage });
119121
},

0 commit comments

Comments
 (0)