diff --git a/frontend/src/app/app.routes.ts b/frontend/src/app/app.routes.ts index 631dc29..40eb449 100644 --- a/frontend/src/app/app.routes.ts +++ b/frontend/src/app/app.routes.ts @@ -1,13 +1,16 @@ import { Routes } from '@angular/router'; +import { alreadyAuthenticatedGuard } from './core/guard/already-authenticated.guard'; export const routes: Routes = [ { path: 'login', - loadComponent: () => import('./pages/login/login.component').then(module => module.LoginComponent) + loadComponent: () => import('./pages/login/login.component').then(module => module.LoginComponent), + canActivate: [alreadyAuthenticatedGuard] }, { path: 'signin', - loadComponent: () => import('./pages/signin/signin.component').then(module => module.SigninComponent) + loadComponent: () => import('./pages/signin/signin.component').then(module => module.SigninComponent), + canActivate: [alreadyAuthenticatedGuard] }, { path: 'disconnect', diff --git a/frontend/src/app/core/guard/already-authenticated.guard.ts b/frontend/src/app/core/guard/already-authenticated.guard.ts new file mode 100644 index 0000000..c2a589d --- /dev/null +++ b/frontend/src/app/core/guard/already-authenticated.guard.ts @@ -0,0 +1,18 @@ +import { inject } from "@angular/core"; +import { CanActivateFn, Router } from "@angular/router"; +import { AuthenticationService } from "../service/authentication.service"; +import { MatSnackBar } from "@angular/material/snack-bar"; + +export const alreadyAuthenticatedGuard: CanActivateFn = () => { + const authenticationService = inject(AuthenticationService); + const router = inject(Router); + const snackBar = inject(MatSnackBar); + + if (authenticationService.isAuthenticated()) { + router.navigate(['/home']); + snackBar.open($localize`You can't access to this page because you are already authenticated.`, $localize`Close`, { duration: 5000 }); + return false; + } else { + return true; + } +} \ No newline at end of file