Skip to content

Commit 144d79f

Browse files
Merge pull request #1695 from rocket-admin/fix-authguard
Fix authguard
2 parents f314fa8 + f09f0fc commit 144d79f

5 files changed

Lines changed: 31 additions & 7 deletions

File tree

frontend/src/app/app-routing.module.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
import { NgModule } from '@angular/core';
22
import { RouterModule, Routes } from '@angular/router';
33
import { provideZxvbnServiceForPSM } from 'angular-password-strength-meter/zxcvbn';
4-
import { AuthGuard } from './auth.guard';
4+
import { AuthGuard } from './guards/auth.guard';
55
import { configurationGuard } from './guards/configuration.guard';
6+
import { noAuthGuard } from './guards/no-auth.guard';
67
import { setupGuard } from './guards/setup.guard';
78

89
const routes: Routes = [
910
{ path: '', redirectTo: '/connections-list', pathMatch: 'full' },
10-
{
11-
path: 'loader',
12-
loadComponent: () => import('./components/page-loader/page-loader.component').then((m) => m.PageLoaderComponent),
13-
},
1411
{
1512
path: 'registration',
1613
loadChildren: () => import('./routes/registration.routes').then((m) => m.REGISTRATION_ROUTES),
14+
canActivate: [noAuthGuard],
1715
},
1816
{
1917
path: 'setup',
@@ -25,7 +23,7 @@ const routes: Routes = [
2523
{
2624
path: 'login',
2725
loadComponent: () => import('./components/login/login.component').then((m) => m.LoginComponent),
28-
canActivate: [configurationGuard],
26+
canActivate: [noAuthGuard, configurationGuard],
2927
title: 'Login | Rocketadmin',
3028
},
3129
{
File renamed without changes.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { CanActivateFn, Router } from '@angular/router';
2+
import { inject } from '@angular/core';
3+
import { differenceInMilliseconds } from 'date-fns';
4+
5+
/**
6+
* Guard that prevents logged-in users from accessing auth pages (login, registration).
7+
* Redirects authenticated users to /connections-list.
8+
*/
9+
export const noAuthGuard: CanActivateFn = () => {
10+
const router = inject(Router);
11+
12+
try {
13+
const expirationToken = localStorage.getItem('token_expiration');
14+
if (expirationToken) {
15+
const expirationTime = new Date(expirationToken);
16+
const expirationInterval = differenceInMilliseconds(expirationTime, new Date());
17+
if (expirationInterval > 0) {
18+
return router.createUrlTree(['/connections-list']);
19+
}
20+
}
21+
} catch {
22+
// If anything fails, allow access to auth pages
23+
}
24+
25+
return true;
26+
};

frontend/src/app/routes/password-change.routes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Routes } from '@angular/router';
22
import { provideZxvbnServiceForPSM } from 'angular-password-strength-meter/zxcvbn';
3-
import { AuthGuard } from '../auth.guard';
3+
import { AuthGuard } from '../guards/auth.guard';
44

55
export const PASSWORD_CHANGE_ROUTES: Routes = [
66
{

0 commit comments

Comments
 (0)