From 40c18ddb9f9c334f88f0b2a1d4a5864e7b5f78dd Mon Sep 17 00:00:00 2001 From: Phan Huy Tran Date: Wed, 18 Dec 2024 11:00:58 +0100 Subject: [PATCH] Configure keycloak --- bun.lockb | Bin 507016 -> 506896 bytes package.json | 3 +- src/app/app.component.ts | 7 ++- src/app/app.config.ts | 52 ++++++++++++++++-- src/app/app.routes.ts | 2 +- .../employee-list/employee-list.component.ts | 9 +-- src/app/login/login.component.ts | 1 + src/app/{ => services}/auth-guard.service.ts | 3 +- src/app/services/auth.service.ts | 11 +++- 9 files changed, 71 insertions(+), 17 deletions(-) rename src/app/{ => services}/auth-guard.service.ts (80%) diff --git a/bun.lockb b/bun.lockb index ac5634912481c5cf9c8cc500b7af6cd78a5d2a54..505d200fbb29ddbd76a978220b8af0f64c3105ce 100755 GIT binary patch delta 101993 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�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 He(?EUCj8Gs diff --git a/package.json b/package.json index de55a03..39047c9 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "@angular/platform-browser": "^19.0.4", "@angular/platform-browser-dynamic": "^19.0.4", "@angular/router": "^19.0.4", + "keycloak-angular": "^16.1.0", "rxjs": "~7.8.1", "tailwind": "4.0.0", "tslib": "^2.8.1", @@ -38,4 +39,4 @@ "karma-jasmine-html-reporter": "~2.1.0", "typescript": "~5.5.4" } -} \ No newline at end of file +} diff --git a/src/app/app.component.ts b/src/app/app.component.ts index c3fb0ad..fdeeb79 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -3,10 +3,11 @@ import {CommonModule} from '@angular/common'; import {RouterOutlet} from '@angular/router'; @Component({ - selector: 'app-root', + selector: 'app-root', imports: [CommonModule, RouterOutlet], - templateUrl: './app.component.html', - styleUrl: './app.component.css' + templateUrl: './app.component.html', + standalone: true, + styleUrl: './app.component.css' }) export class AppComponent { title = 'lf10StarterNew'; diff --git a/src/app/app.config.ts b/src/app/app.config.ts index bbb5610..15465eb 100644 --- a/src/app/app.config.ts +++ b/src/app/app.config.ts @@ -1,10 +1,50 @@ -import { ApplicationConfig } from '@angular/core'; -import { provideRouter } from '@angular/router'; +import {APP_INITIALIZER, ApplicationConfig} from '@angular/core'; +import {provideRouter} from '@angular/router'; +import {KeycloakAngularModule, KeycloakBearerInterceptor, KeycloakService} from "keycloak-angular"; +import {routes} from './app.routes'; +import {HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi} from "@angular/common/http"; +import {provideAnimationsAsync} from '@angular/platform-browser/animations/async'; -import { routes } from './app.routes'; -import {provideHttpClient, withInterceptorsFromDi} from "@angular/common/http"; -import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; +export const initializeKeycloak = (keycloak: KeycloakService) => async () => + keycloak.init({ + config: { + url: 'https://keycloak.szut.dev/auth', + realm: 'szut', + clientId: 'employee-management-service-frontend', + }, + loadUserProfileAtStartUp: true, + initOptions: { + onLoad: 'check-sso', + silentCheckSsoRedirectUri: + window.location.origin + '/silent-check-sso.html', + checkLoginIframe: false, + redirectUri: 'http://localhost:4200', + }, + }); + + +function initializeApp(keycloak: KeycloakService): () => Promise { + return () => initializeKeycloak(keycloak)(); +} export const appConfig: ApplicationConfig = { - providers: [provideRouter(routes), provideHttpClient(withInterceptorsFromDi()), provideAnimationsAsync()] + providers: [ + provideRouter(routes), + provideHttpClient(withInterceptorsFromDi()), + provideAnimationsAsync(), + KeycloakAngularModule, + { + provide: APP_INITIALIZER, + useFactory: initializeApp, + multi: true, + deps: [KeycloakService] + }, + KeycloakService, + provideHttpClient(withInterceptorsFromDi()), + { + provide: HTTP_INTERCEPTORS, + useClass: KeycloakBearerInterceptor, + multi: true + } + ] }; diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index c007ee6..5317377 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -1,7 +1,7 @@ import {Routes} from '@angular/router'; import {EmployeeListComponent} from "./employee-list/employee-list.component"; import {LoginComponent} from "./login/login.component"; -import {AuthGuardService} from "./auth-guard.service"; +import {AuthGuardService} from "./services/auth-guard.service"; export const routes: Routes = [ {path: 'login', component: LoginComponent}, diff --git a/src/app/employee-list/employee-list.component.ts b/src/app/employee-list/employee-list.component.ts index 983cb98..95a3870 100644 --- a/src/app/employee-list/employee-list.component.ts +++ b/src/app/employee-list/employee-list.component.ts @@ -5,10 +5,11 @@ import {HttpClient, HttpHeaders} from "@angular/common/http"; import {Employee} from "../Employee"; @Component({ - selector: 'app-employee-list', - imports: [CommonModule], - templateUrl: './employee-list.component.html', - styleUrl: './employee-list.component.css' + selector: 'app-employee-list', + imports: [CommonModule], + templateUrl: './employee-list.component.html', + standalone: true, + styleUrl: './employee-list.component.css' }) export class EmployeeListComponent { bearer = 'eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIzUFQ0dldiNno5MnlQWk1EWnBqT1U0RjFVN0lwNi1ELUlqQWVGczJPbGU0In0.eyJleHAiOjE3MzM5MTQ5MjgsImlhdCI6MTczMzkxMTMyOCwianRpIjoiMjNhYzMwMmUtYmYxNS00OTRmLWJhYTItNjIzODllYWZkMmZhIiwiaXNzIjoiaHR0cHM6Ly9rZXljbG9hay5zenV0LmRldi9hdXRoL3JlYWxtcy9zenV0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjU1NDZjZDIxLTk4NTQtNDMyZi1hNDY3LTRkZTNlZWRmNTg4OSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImVtcGxveWVlLW1hbmFnZW1lbnQtc2VydmljZSIsInNlc3Npb25fc3RhdGUiOiI2ODdiMTEwYS00NTRjLTQwMzgtYjBkMS1kZDAzZGQ1N2JiNjEiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbImh0dHA6Ly9sb2NhbGhvc3Q6NDIwMCJdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsicHJvZHVjdF9vd25lciIsIm9mZmxpbmVfYWNjZXNzIiwiZGVmYXVsdC1yb2xlcy1zenV0IiwidW1hX2F1dGhvcml6YXRpb24iLCJ1c2VyIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJlbWFpbCBwcm9maWxlIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInByZWZlcnJlZF91c2VybmFtZSI6InVzZXIifQ.E5ir1Z-POpUU_jvTh8CzoMYO74qo_7uQXw7QQBUvXB2_37pT3_tutAq6sM4V5cNBu--fWar5bltlNcOAWd_7Kdb66Qc23i0RR9vPneoSduJAzoD8gtFbx8c7ltNR4pG-c6tdnkGhLLqM621DShaSlH8Shp-Z0-y4Iq3GFdQrAFH1CrRVYlW0qFv1EZsE9BmhW3hJwrR1S2IPiEN6MwhehLflLa_ZgLcF417ocIfK-6gbbRNAwXA-JajFVOZAEVXs-52Ta9Kb_EEQFpRsjXorfflmbizQmgrbhBUB7MTiPYIcRruZSYdfmjcE008PHnut52cTcVYEuOrUCUqY4VmhoQ'; diff --git a/src/app/login/login.component.ts b/src/app/login/login.component.ts index b3f2e24..b32d924 100644 --- a/src/app/login/login.component.ts +++ b/src/app/login/login.component.ts @@ -4,6 +4,7 @@ import { Component } from '@angular/core'; selector: 'app-login', imports: [], templateUrl: './login.component.html', + standalone: true, styleUrl: './login.component.css' }) export class LoginComponent { diff --git a/src/app/auth-guard.service.ts b/src/app/services/auth-guard.service.ts similarity index 80% rename from src/app/auth-guard.service.ts rename to src/app/services/auth-guard.service.ts index 2d97980..2d65472 100644 --- a/src/app/auth-guard.service.ts +++ b/src/app/services/auth-guard.service.ts @@ -1,6 +1,7 @@ import {Injectable} from '@angular/core'; -import {AuthService} from "./services/auth.service"; +import {AuthService} from "./auth.service"; import {Router} from "@angular/router"; +import {KeycloakService} from "keycloak-angular"; @Injectable({ providedIn: 'root' diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts index 55b1d26..2a56cef 100644 --- a/src/app/services/auth.service.ts +++ b/src/app/services/auth.service.ts @@ -1,10 +1,19 @@ -import {Injectable} from '@angular/core'; +import {inject, Injectable} from '@angular/core'; +import {KeycloakService} from "keycloak-angular"; @Injectable({ providedIn: 'root' }) export class AuthService { + private keycloakService = inject(KeycloakService); + public isAuthenticated(): boolean { + if (this.keycloakService.isLoggedIn()) { + return true; + } + + this.keycloakService.login(); + return false; } }