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 { LandingPageComponent } from './landing-page/landing-page.component';
import { HomepageComponent } from './homepage/homepage/homepage.component';
import { LandingComponent } from './feature/landing/landing.component';
import { HomeComponent } from './feature/home/home.component';
import { authGuard } from './auth.guard';
export const routes: Routes = [
{
path: '',
component: LandingPageComponent,
component: LandingComponent,
},
{
path: 'home',
component: HomepageComponent,
component: HomeComponent,
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 { KeycloakService } from 'keycloak-angular';
export const authGuard: CanActivateFn = async () => {
export const authGuard: CanActivateFn = async (
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
) => {
const keycloakService = inject(KeycloakService);
const isLoggedIn = keycloakService.isLoggedIn();
@ -10,6 +13,11 @@ export const authGuard: CanActivateFn = async () => {
return true;
}
keycloakService.login();
const baseurl = window.location.origin;
keycloakService.login({
redirectUri: `${baseurl}${state.url}`,
});
return false;
};

View file

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

View file

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