refactor: Redirect to orginal route after login, restructure project files

This commit is contained in:
Phan Huy Tran 2025-02-13 10:29:13 +01:00 committed by Huy
parent 29d3c53b19
commit 704cc22858
6 changed files with 20 additions and 12 deletions

View file

@ -1,16 +1,16 @@
import { Routes } from '@angular/router'; import { Routes } from '@angular/router';
import { LandingPageComponent } from './landing-page/landing-page.component'; import { LandingComponent } from './feature/landing/landing.component';
import { HomepageComponent } from './homepage/homepage/homepage.component'; import { HomeComponent } from './feature/home/home.component';
import { authGuard } from './auth.guard'; import { authGuard } from './auth.guard';
export const routes: Routes = [ export const routes: Routes = [
{ {
path: '', path: '',
component: LandingPageComponent, component: LandingComponent,
}, },
{ {
path: 'home', path: 'home',
component: HomepageComponent, component: HomeComponent,
canActivate: [authGuard], canActivate: [authGuard],
}, },
]; ];

View file

@ -1,8 +1,11 @@
import { CanActivateFn } from '@angular/router'; import { ActivatedRouteSnapshot, CanActivateFn, RouterStateSnapshot } from '@angular/router';
import { inject } from '@angular/core'; import { inject } from '@angular/core';
import { KeycloakService } from 'keycloak-angular'; import { KeycloakService } from 'keycloak-angular';
export const authGuard: CanActivateFn = async () => { export const authGuard: CanActivateFn = async (
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
) => {
const keycloakService = inject(KeycloakService); const keycloakService = inject(KeycloakService);
const isLoggedIn = keycloakService.isLoggedIn(); const isLoggedIn = keycloakService.isLoggedIn();
@ -10,6 +13,11 @@ export const authGuard: CanActivateFn = async () => {
return true; return true;
} }
keycloakService.login(); const baseurl = window.location.origin;
keycloakService.login({
redirectUri: `${baseurl}${state.url}`,
});
return false; return false;
}; };

View file

@ -5,10 +5,10 @@ import { KeycloakService } from 'keycloak-angular';
selector: 'app-homepage', selector: 'app-homepage',
standalone: true, standalone: true,
imports: [], imports: [],
templateUrl: './homepage.component.html', templateUrl: './home.component.html',
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
}) })
export class HomepageComponent { export class HomeComponent {
private keycloakService: KeycloakService = inject(KeycloakService); private keycloakService: KeycloakService = inject(KeycloakService);
logout() { logout() {

View file

@ -3,12 +3,12 @@ import { KeycloakService } from 'keycloak-angular';
import { RouterLink } from '@angular/router'; import { RouterLink } from '@angular/router';
@Component({ @Component({
selector: 'app-landing-page', selector: 'app-landing',
standalone: true, standalone: true,
imports: [RouterLink], imports: [RouterLink],
templateUrl: './landing-page.component.html', templateUrl: './landing.component.html',
}) })
export class LandingPageComponent { export class LandingComponent {
private keycloakService: KeycloakService = inject(KeycloakService); private keycloakService: KeycloakService = inject(KeycloakService);
public isLoggedIn = this.keycloakService.isLoggedIn(); public isLoggedIn = this.keycloakService.isLoggedIn();