@meshmakers/shared-auth 3.2.7-0 → 3.2.10-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/meshmakers-shared-auth.mjs +20 -20
- package/fesm2022/meshmakers-shared-auth.mjs.map +1 -1
- package/lib/authorize.guard.d.ts +2 -2
- package/package.json +1 -3
- package/esm2022/lib/authorize.guard.mjs +0 -47
- package/esm2022/lib/authorize.interceptor.mjs +0 -65
- package/esm2022/lib/authorize.service.mjs +0 -159
- package/esm2022/lib/login-menu/login-menu.component.mjs +0 -37
- package/esm2022/lib/roles.mjs +0 -10
- package/esm2022/lib/shared-auth.module.mjs +0 -38
- package/esm2022/meshmakers-shared-auth.mjs +0 -5
- package/esm2022/public-api.mjs +0 -10
|
@@ -157,10 +157,10 @@ class AuthorizeService {
|
|
|
157
157
|
this.user.next(user);
|
|
158
158
|
this.accessToken.next(accessToken);
|
|
159
159
|
}
|
|
160
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
161
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
160
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AuthorizeService, deps: [{ token: i1.OAuthService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
161
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AuthorizeService });
|
|
162
162
|
}
|
|
163
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AuthorizeService, decorators: [{
|
|
164
164
|
type: Injectable
|
|
165
165
|
}], ctorParameters: () => [{ type: i1.OAuthService }] });
|
|
166
166
|
|
|
@@ -197,12 +197,12 @@ class LoginMenuComponent {
|
|
|
197
197
|
this.authorizeService.logout();
|
|
198
198
|
}
|
|
199
199
|
register() { }
|
|
200
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
201
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
200
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: LoginMenuComponent, deps: [{ token: AuthorizeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
201
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.2", type: LoginMenuComponent, isStandalone: false, selector: "mm-login-menu", ngImport: i0, template: "<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
|
202
202
|
}
|
|
203
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
203
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: LoginMenuComponent, decorators: [{
|
|
204
204
|
type: Component,
|
|
205
|
-
args: [{ selector: 'mm-login-menu', template: "<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n" }]
|
|
205
|
+
args: [{ selector: 'mm-login-menu', standalone: false, template: "<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n" }]
|
|
206
206
|
}], ctorParameters: () => [{ type: AuthorizeService }] });
|
|
207
207
|
|
|
208
208
|
class AuthorizeGuard {
|
|
@@ -219,13 +219,13 @@ class AuthorizeGuard {
|
|
|
219
219
|
canActivateChild(next, state) {
|
|
220
220
|
return this.canActivate(next, state);
|
|
221
221
|
}
|
|
222
|
-
canDeactivate(
|
|
222
|
+
canDeactivate(_component, _currentRoute, _currentState, _nextState) {
|
|
223
223
|
return true;
|
|
224
224
|
}
|
|
225
|
-
canLoad(
|
|
225
|
+
canLoad(_route, _segments) {
|
|
226
226
|
return true;
|
|
227
227
|
}
|
|
228
|
-
async handleAuthorization(route,
|
|
228
|
+
async handleAuthorization(route, _url) {
|
|
229
229
|
const isAuthenticated = await firstValueFrom(this.authorizeService.getIsAuthenticated());
|
|
230
230
|
if (isAuthenticated) {
|
|
231
231
|
const userRoles = await firstValueFrom(this.authorizeService.getRoles());
|
|
@@ -240,10 +240,10 @@ class AuthorizeGuard {
|
|
|
240
240
|
}
|
|
241
241
|
return false;
|
|
242
242
|
}
|
|
243
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
244
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
243
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AuthorizeGuard, deps: [{ token: AuthorizeService }, { token: i2$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
244
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AuthorizeGuard });
|
|
245
245
|
}
|
|
246
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
246
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AuthorizeGuard, decorators: [{
|
|
247
247
|
type: Injectable
|
|
248
248
|
}], ctorParameters: () => [{ type: AuthorizeService }, { type: i2$1.Router }] });
|
|
249
249
|
|
|
@@ -261,11 +261,11 @@ class SharedAuthModule {
|
|
|
261
261
|
]
|
|
262
262
|
};
|
|
263
263
|
}
|
|
264
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
265
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
266
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
264
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: SharedAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
265
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.2", ngImport: i0, type: SharedAuthModule, declarations: [LoginMenuComponent], imports: [CommonModule, HttpClientModule, i1.OAuthModule, RouterLink], exports: [LoginMenuComponent] });
|
|
266
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: SharedAuthModule, imports: [CommonModule, HttpClientModule, OAuthModule.forRoot()] });
|
|
267
267
|
}
|
|
268
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
268
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: SharedAuthModule, decorators: [{
|
|
269
269
|
type: NgModule,
|
|
270
270
|
args: [{
|
|
271
271
|
declarations: [LoginMenuComponent],
|
|
@@ -330,10 +330,10 @@ class AuthorizeInterceptor {
|
|
|
330
330
|
// doesn't have the same origin.
|
|
331
331
|
return false;
|
|
332
332
|
}
|
|
333
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
334
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
333
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AuthorizeInterceptor, deps: [{ token: AuthorizeService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
334
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AuthorizeInterceptor });
|
|
335
335
|
}
|
|
336
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
336
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AuthorizeInterceptor, decorators: [{
|
|
337
337
|
type: Injectable
|
|
338
338
|
}], ctorParameters: () => [{ type: AuthorizeService }] });
|
|
339
339
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meshmakers-shared-auth.mjs","sources":["../../../../projects/meshmakers/shared-auth/src/lib/authorize.service.ts","../../../../projects/meshmakers/shared-auth/src/lib/roles.ts","../../../../projects/meshmakers/shared-auth/src/lib/login-menu/login-menu.component.ts","../../../../projects/meshmakers/shared-auth/src/lib/login-menu/login-menu.component.html","../../../../projects/meshmakers/shared-auth/src/lib/authorize.guard.ts","../../../../projects/meshmakers/shared-auth/src/lib/shared-auth.module.ts","../../../../projects/meshmakers/shared-auth/src/lib/authorize.interceptor.ts","../../../../projects/meshmakers/shared-auth/src/public-api.ts","../../../../projects/meshmakers/shared-auth/src/meshmakers-shared-auth.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject, firstValueFrom, Observable } from \"rxjs\";\nimport { filter, map } from \"rxjs/operators\";\nimport { AuthConfig, OAuthService } from \"angular-oauth2-oidc\";\nimport { Roles } from \"./roles\";\n\nexport interface IUser {\n name: string;\n role: string[];\n sub: string;\n idp: string;\n email: string | null;\n}\n\nexport class AuthorizeOptions {\n wellKnownServiceUris?: string[];\n // Url of the Identity Provider\n issuer?: string;\n // URL of the SPA to redirect the user to after login\n redirectUri?: string;\n postLogoutRedirectUri?: string;\n // The SPA's id. The SPA is registered with this id at the auth-server\n clientId?: string;\n // set the scope for the permissions the client should request\n // The first three are defined by OIDC. The 4th is a use case-specific one\n scope?: string;\n showDebugInformation?: boolean;\n sessionChecksEnabled?: boolean;\n}\n\n@Injectable()\nexport class AuthorizeService {\n private readonly isAuthenticated = new BehaviorSubject<boolean>(false);\n private readonly authority: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);\n\n private readonly accessToken: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);\n\n private readonly user: BehaviorSubject<IUser | null> = new BehaviorSubject<IUser | null>(null);\n\n private readonly isInitialized = new BehaviorSubject<boolean>(false);\n private readonly isInitializing = new BehaviorSubject<boolean>(false);\n\n private authorizeOptions: AuthorizeOptions | null = null;\n\n constructor(\n private readonly oauthService: OAuthService\n ) {\n console.debug(\"AuthorizeService::created\");\n\n this.getUser().subscribe((s) => {\n this.isAuthenticated.next(!(s == null));\n });\n\n this.oauthService.events.subscribe((e) => {\n console.debug(\"oauth/oidc event\", e);\n });\n\n this.oauthService.events.pipe(filter((e) => e.type === \"session_terminated\")).subscribe((_) => {\n console.debug(\"Your session has been terminated!\");\n });\n\n this.oauthService.events.pipe(filter((e) => e.type === \"token_received\")).subscribe((_) => {\n this.loadUser();\n });\n\n this.oauthService.events.pipe(filter((e) => e.type === \"session_unchanged\")).subscribe((_) => {\n if (this.user.value == null) {\n this.loadUser();\n }\n });\n\n this.oauthService.events.pipe(filter((e) => e.type === \"logout\")).subscribe((_) => {\n this.accessToken.next(null);\n this.user.next(null);\n });\n }\n\n public isInRole(role: Roles): boolean {\n return this.user?.value?.role.includes(role) ?? false;\n }\n\n public getRoles(): Observable<string[]> {\n return this.getUser().pipe(map((u) => (u != null ? u.role : new Array<string>())));\n }\n\n public getServiceUris(): string[] | null {\n return this.authorizeOptions?.wellKnownServiceUris ?? null;\n }\n\n public getAuthority(): Observable<string | null> {\n return this.authority;\n }\n\n public getIsAuthenticated(): Observable<boolean> {\n return this.isAuthenticated;\n }\n\n public getAccessToken(): Observable<string | null> {\n return this.accessToken;\n }\n\n public getUser(): Observable<IUser | null> {\n return this.user;\n }\n\n public login(): void {\n this.oauthService.initImplicitFlow();\n }\n\n public logout(): void {\n this.oauthService.logOut(false);\n }\n\n public async initialize(authorizeOptions: AuthorizeOptions): Promise<void> {\n console.debug(\"AuthorizeService::initialize::started\");\n\n await this.uninitialize();\n\n if (await firstValueFrom(this.isInitializing)) {\n return;\n }\n if (await firstValueFrom(this.isInitialized)) {\n console.debug(\"AuthorizeService::initialize::alreadyInitialized\");\n return;\n }\n this.isInitializing.next(true);\n\n try {\n const config: AuthConfig = {\n responseType: \"code\",\n issuer: authorizeOptions.issuer,\n redirectUri: authorizeOptions.redirectUri,\n postLogoutRedirectUri: authorizeOptions.postLogoutRedirectUri,\n clientId: authorizeOptions.clientId,\n scope: authorizeOptions.scope,\n showDebugInformation: authorizeOptions.showDebugInformation,\n sessionChecksEnabled: authorizeOptions.sessionChecksEnabled,\n preserveRequestedRoute: true\n };\n\n this.authorizeOptions = authorizeOptions;\n\n this.oauthService.configure(config);\n this.oauthService.setStorage(localStorage);\n console.debug(\"AuthorizeService::initialize::loadingDiscoveryDocumentAndTryLogin\");\n await this.oauthService.loadDiscoveryDocumentAndTryLogin();\n\n console.debug(\"AuthorizeService::initialize::setupAutomaticSilentRefresh\");\n this.oauthService.setupAutomaticSilentRefresh();\n\n this.authority.next(authorizeOptions.issuer ?? null);\n\n\n this.isInitialized.next(true);\n console.debug(\"AuthorizeService::initialize::done\");\n }\n finally {\n this.isInitializing.next(false);\n }\n\n console.debug(\"AuthorizeService::initialize::completed\");\n }\n\n public async uninitialize(): Promise<void> {\n console.debug(\"AuthorizeService::uninitialize::started\");\n\n if (await firstValueFrom(this.isInitializing)) {\n return;\n }\n if (!await firstValueFrom(this.isInitialized)) {\n console.debug(\"AuthorizeService::uninitialize::alreadyUninitialized\");\n return;\n }\n\n try {\n this.isInitializing.next(true);\n\n this.oauthService.stopAutomaticRefresh();\n\n this.authorizeOptions = null;\n\n this.isInitialized.next(false);\n console.debug(\"AuthorizeService::uninitialize::done\");\n }\n finally {\n this.isInitializing.next(false);\n }\n\n console.debug(\"AuthorizeService::uninitialize::completed\");\n }\n\n private loadUser(): void {\n const claims = this.oauthService.getIdentityClaims();\n if (!claims) {\n console.error(\"claims where null when loading identity claims\");\n return;\n }\n\n const user = claims as IUser;\n const accessToken = this.oauthService.getAccessToken();\n this.user.next(user);\n this.accessToken.next(accessToken);\n }\n}\n","export enum Roles {\n AdminPanelManagement = 'AdminPanelManagement',\n BotManagement = 'BotManagement',\n UserManagement = 'UserManagement',\n CommunicationManagement = 'CommunicationManagement',\n TenantManagement = 'TenantManagement',\n Development = 'Development'\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AuthorizeService } from '../authorize.service';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'mm-login-menu',\n templateUrl: './login-menu.component.html',\n styleUrls: ['./login-menu.component.css']\n})\nexport class LoginMenuComponent implements OnInit {\n public isAuthenticated: Observable<boolean>;\n public userName: Observable<string | null>;\n\n constructor(private readonly authorizeService: AuthorizeService) {\n this.isAuthenticated = this.authorizeService.getIsAuthenticated();\n this.userName = this.authorizeService.getUser().pipe(map((u) => u?.name ?? null));\n }\n\n ngOnInit(): void {\n const isIFrame = window.self !== window.top;\n\n console.log('app-login-menu::created');\n\n this.isAuthenticated.subscribe((x) => {\n console.log(`isAuthenticated changed to ${x} (iframe ${isIFrame})`);\n });\n }\n\n public login(): void {\n this.authorizeService.login();\n }\n\n public logout(): void {\n this.authorizeService.logout();\n }\n\n public register(): void {}\n}\n","<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Route, Router, RouterStateSnapshot, UrlSegment, UrlTree } from '@angular/router';\nimport { AuthorizeService } from './authorize.service';\nimport { firstValueFrom, Observable } from 'rxjs';\n\n@Injectable()\nexport class AuthorizeGuard {\n constructor(\n private readonly authorizeService: AuthorizeService,\n private readonly router: Router\n ) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const url: string = state.url;\n return this.handleAuthorization(next, url);\n }\n\n canActivateChild(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return this.canActivate(next, state);\n }\n\n canDeactivate(\n component: unknown,\n currentRoute: ActivatedRouteSnapshot,\n currentState: RouterStateSnapshot,\n nextState?: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return true;\n }\n\n canLoad(route: Route, segments: UrlSegment[]): Observable<boolean> | Promise<boolean> | boolean {\n return true;\n }\n\n private async handleAuthorization(route: ActivatedRouteSnapshot, url: any): Promise<boolean> {\n const isAuthenticated = await firstValueFrom(this.authorizeService.getIsAuthenticated());\n if (isAuthenticated) {\n const userRoles = await firstValueFrom(this.authorizeService.getRoles());\n if (route.data['roles'] && !route.data['roles'].filter((value: string) => userRoles.includes(value))) {\n await this.router.navigate(['']);\n return false;\n }\n return true;\n } else {\n this.authorizeService.login();\n }\n\n return false;\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { LoginMenuComponent } from './login-menu/login-menu.component';\nimport { AuthorizeOptions, AuthorizeService } from './authorize.service';\nimport { OAuthModule } from 'angular-oauth2-oidc';\nimport { AuthorizeGuard } from './authorize.guard';\nimport { RouterLink } from '@angular/router';\n\n@NgModule({\n declarations: [LoginMenuComponent],\n exports: [LoginMenuComponent],\n providers: [],\n imports: [CommonModule, HttpClientModule, OAuthModule.forRoot(), RouterLink]\n})\nexport class SharedAuthModule {\n static forRoot(authorizeOptions: AuthorizeOptions): ModuleWithProviders<SharedAuthModule> {\n return {\n ngModule: SharedAuthModule,\n providers: [\n {\n provide: AuthorizeOptions,\n useValue: authorizeOptions\n },\n AuthorizeService,\n AuthorizeGuard\n ]\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { AuthorizeService } from './authorize.service';\n\n@Injectable()\nexport class AuthorizeInterceptor implements HttpInterceptor {\n accessToken: string | null;\n\n constructor(private readonly authorize: AuthorizeService) {\n this.accessToken = null;\n authorize.getAccessToken().subscribe((value) => (this.accessToken = value));\n }\n\n private static isSameOriginUrl(req: HttpRequest<any>): boolean {\n // It's an absolute url with the same origin.\n if (req.url.startsWith(`${window.location.origin}/`)) {\n return true;\n }\n\n // It's a protocol relative url with the same origin.\n // For example: //www.example.com/api/Products\n if (req.url.startsWith(`//${window.location.host}/`)) {\n return true;\n }\n\n // It's a relative url like /api/Products\n if (/^\\/[^/].*/.test(req.url)) {\n return true;\n }\n\n // It's an absolute or protocol relative url that\n // doesn't have the same origin.\n return false;\n }\n\n // Checks if there is an access_token available in the authorize service\n // and adds it to the request in case it's targeted at the same origin as the\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return this.processRequestWithToken(this.accessToken, req, next);\n }\n\n // single page application.\n private processRequestWithToken(token: string | null, req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!!token && (AuthorizeInterceptor.isSameOriginUrl(req) || this.isKnownServiceUri(req))) {\n req = req.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`\n }\n });\n }\n\n return next.handle(req);\n }\n\n private isKnownServiceUri(req: any): boolean {\n const serviceUris = this.authorize.getServiceUris();\n\n if (serviceUris != null) {\n for (const serviceUri of serviceUris) {\n if (req.url.startsWith(`${serviceUri}`)) {\n return true;\n }\n }\n }\n\n // It's an absolute or protocol relative url that\n // doesn't have the same origin.\n return false;\n }\n}\n","/*\n * Public API Surface of shared-auth\n */\n\nexport * from './lib/authorize.service';\nexport * from './lib/roles';\nexport * from './lib/login-menu/login-menu.component';\nexport * from './lib/shared-auth.module';\nexport * from './lib/authorize.interceptor';\nexport * from './lib/authorize.guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AuthorizeService","i3","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"meshmakers-shared-auth.mjs","sources":["../../../../projects/meshmakers/shared-auth/src/lib/authorize.service.ts","../../../../projects/meshmakers/shared-auth/src/lib/roles.ts","../../../../projects/meshmakers/shared-auth/src/lib/login-menu/login-menu.component.ts","../../../../projects/meshmakers/shared-auth/src/lib/login-menu/login-menu.component.html","../../../../projects/meshmakers/shared-auth/src/lib/authorize.guard.ts","../../../../projects/meshmakers/shared-auth/src/lib/shared-auth.module.ts","../../../../projects/meshmakers/shared-auth/src/lib/authorize.interceptor.ts","../../../../projects/meshmakers/shared-auth/src/public-api.ts","../../../../projects/meshmakers/shared-auth/src/meshmakers-shared-auth.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject, firstValueFrom, Observable } from \"rxjs\";\nimport { filter, map } from \"rxjs/operators\";\nimport { AuthConfig, OAuthService } from \"angular-oauth2-oidc\";\nimport { Roles } from \"./roles\";\n\nexport interface IUser {\n name: string;\n role: string[];\n sub: string;\n idp: string;\n email: string | null;\n}\n\nexport class AuthorizeOptions {\n wellKnownServiceUris?: string[];\n // Url of the Identity Provider\n issuer?: string;\n // URL of the SPA to redirect the user to after login\n redirectUri?: string;\n postLogoutRedirectUri?: string;\n // The SPA's id. The SPA is registered with this id at the auth-server\n clientId?: string;\n // set the scope for the permissions the client should request\n // The first three are defined by OIDC. The 4th is a use case-specific one\n scope?: string;\n showDebugInformation?: boolean;\n sessionChecksEnabled?: boolean;\n}\n\n@Injectable()\nexport class AuthorizeService {\n private readonly isAuthenticated = new BehaviorSubject<boolean>(false);\n private readonly authority: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);\n\n private readonly accessToken: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);\n\n private readonly user: BehaviorSubject<IUser | null> = new BehaviorSubject<IUser | null>(null);\n\n private readonly isInitialized = new BehaviorSubject<boolean>(false);\n private readonly isInitializing = new BehaviorSubject<boolean>(false);\n\n private authorizeOptions: AuthorizeOptions | null = null;\n\n constructor(\n private readonly oauthService: OAuthService\n ) {\n console.debug(\"AuthorizeService::created\");\n\n this.getUser().subscribe((s) => {\n this.isAuthenticated.next(!(s == null));\n });\n\n this.oauthService.events.subscribe((e) => {\n console.debug(\"oauth/oidc event\", e);\n });\n\n this.oauthService.events.pipe(filter((e) => e.type === \"session_terminated\")).subscribe((_) => {\n console.debug(\"Your session has been terminated!\");\n });\n\n this.oauthService.events.pipe(filter((e) => e.type === \"token_received\")).subscribe((_) => {\n this.loadUser();\n });\n\n this.oauthService.events.pipe(filter((e) => e.type === \"session_unchanged\")).subscribe((_) => {\n if (this.user.value == null) {\n this.loadUser();\n }\n });\n\n this.oauthService.events.pipe(filter((e) => e.type === \"logout\")).subscribe((_) => {\n this.accessToken.next(null);\n this.user.next(null);\n });\n }\n\n public isInRole(role: Roles): boolean {\n return this.user?.value?.role.includes(role) ?? false;\n }\n\n public getRoles(): Observable<string[]> {\n return this.getUser().pipe(map((u) => (u != null ? u.role : new Array<string>())));\n }\n\n public getServiceUris(): string[] | null {\n return this.authorizeOptions?.wellKnownServiceUris ?? null;\n }\n\n public getAuthority(): Observable<string | null> {\n return this.authority;\n }\n\n public getIsAuthenticated(): Observable<boolean> {\n return this.isAuthenticated;\n }\n\n public getAccessToken(): Observable<string | null> {\n return this.accessToken;\n }\n\n public getUser(): Observable<IUser | null> {\n return this.user;\n }\n\n public login(): void {\n this.oauthService.initImplicitFlow();\n }\n\n public logout(): void {\n this.oauthService.logOut(false);\n }\n\n public async initialize(authorizeOptions: AuthorizeOptions): Promise<void> {\n console.debug(\"AuthorizeService::initialize::started\");\n\n await this.uninitialize();\n\n if (await firstValueFrom(this.isInitializing)) {\n return;\n }\n if (await firstValueFrom(this.isInitialized)) {\n console.debug(\"AuthorizeService::initialize::alreadyInitialized\");\n return;\n }\n this.isInitializing.next(true);\n\n try {\n const config: AuthConfig = {\n responseType: \"code\",\n issuer: authorizeOptions.issuer,\n redirectUri: authorizeOptions.redirectUri,\n postLogoutRedirectUri: authorizeOptions.postLogoutRedirectUri,\n clientId: authorizeOptions.clientId,\n scope: authorizeOptions.scope,\n showDebugInformation: authorizeOptions.showDebugInformation,\n sessionChecksEnabled: authorizeOptions.sessionChecksEnabled,\n preserveRequestedRoute: true\n };\n\n this.authorizeOptions = authorizeOptions;\n\n this.oauthService.configure(config);\n this.oauthService.setStorage(localStorage);\n console.debug(\"AuthorizeService::initialize::loadingDiscoveryDocumentAndTryLogin\");\n await this.oauthService.loadDiscoveryDocumentAndTryLogin();\n\n console.debug(\"AuthorizeService::initialize::setupAutomaticSilentRefresh\");\n this.oauthService.setupAutomaticSilentRefresh();\n\n this.authority.next(authorizeOptions.issuer ?? null);\n\n\n this.isInitialized.next(true);\n console.debug(\"AuthorizeService::initialize::done\");\n }\n finally {\n this.isInitializing.next(false);\n }\n\n console.debug(\"AuthorizeService::initialize::completed\");\n }\n\n public async uninitialize(): Promise<void> {\n console.debug(\"AuthorizeService::uninitialize::started\");\n\n if (await firstValueFrom(this.isInitializing)) {\n return;\n }\n if (!await firstValueFrom(this.isInitialized)) {\n console.debug(\"AuthorizeService::uninitialize::alreadyUninitialized\");\n return;\n }\n\n try {\n this.isInitializing.next(true);\n\n this.oauthService.stopAutomaticRefresh();\n\n this.authorizeOptions = null;\n\n this.isInitialized.next(false);\n console.debug(\"AuthorizeService::uninitialize::done\");\n }\n finally {\n this.isInitializing.next(false);\n }\n\n console.debug(\"AuthorizeService::uninitialize::completed\");\n }\n\n private loadUser(): void {\n const claims = this.oauthService.getIdentityClaims();\n if (!claims) {\n console.error(\"claims where null when loading identity claims\");\n return;\n }\n\n const user = claims as IUser;\n const accessToken = this.oauthService.getAccessToken();\n this.user.next(user);\n this.accessToken.next(accessToken);\n }\n}\n","export enum Roles {\n AdminPanelManagement = 'AdminPanelManagement',\n BotManagement = 'BotManagement',\n UserManagement = 'UserManagement',\n CommunicationManagement = 'CommunicationManagement',\n TenantManagement = 'TenantManagement',\n Development = 'Development'\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AuthorizeService } from '../authorize.service';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'mm-login-menu',\n standalone: false,\n templateUrl: './login-menu.component.html',\n styleUrls: ['./login-menu.component.css']\n})\nexport class LoginMenuComponent implements OnInit {\n public isAuthenticated: Observable<boolean>;\n public userName: Observable<string | null>;\n\n constructor(private readonly authorizeService: AuthorizeService) {\n this.isAuthenticated = this.authorizeService.getIsAuthenticated();\n this.userName = this.authorizeService.getUser().pipe(map((u) => u?.name ?? null));\n }\n\n ngOnInit(): void {\n const isIFrame = window.self !== window.top;\n\n console.log('app-login-menu::created');\n\n this.isAuthenticated.subscribe((x) => {\n console.log(`isAuthenticated changed to ${x} (iframe ${isIFrame})`);\n });\n }\n\n public login(): void {\n this.authorizeService.login();\n }\n\n public logout(): void {\n this.authorizeService.logout();\n }\n\n public register(): void {}\n}\n","<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Route, Router, RouterStateSnapshot, UrlSegment, UrlTree } from '@angular/router';\nimport { AuthorizeService } from './authorize.service';\nimport { firstValueFrom, Observable } from 'rxjs';\n\n@Injectable()\nexport class AuthorizeGuard {\n constructor(\n private readonly authorizeService: AuthorizeService,\n private readonly router: Router\n ) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const url: string = state.url;\n return this.handleAuthorization(next, url);\n }\n\n canActivateChild(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return this.canActivate(next, state);\n }\n\n canDeactivate(\n _component: unknown,\n _currentRoute: ActivatedRouteSnapshot,\n _currentState: RouterStateSnapshot,\n _nextState?: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return true;\n }\n\n canLoad(_route: Route, _segments: UrlSegment[]): Observable<boolean> | Promise<boolean> | boolean {\n return true;\n }\n\n private async handleAuthorization(route: ActivatedRouteSnapshot, _url: any): Promise<boolean> {\n const isAuthenticated = await firstValueFrom(this.authorizeService.getIsAuthenticated());\n if (isAuthenticated) {\n const userRoles = await firstValueFrom(this.authorizeService.getRoles());\n if (route.data['roles'] && !route.data['roles'].filter((value: string) => userRoles.includes(value))) {\n await this.router.navigate(['']);\n return false;\n }\n return true;\n } else {\n this.authorizeService.login();\n }\n\n return false;\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { LoginMenuComponent } from './login-menu/login-menu.component';\nimport { AuthorizeOptions, AuthorizeService } from './authorize.service';\nimport { OAuthModule } from 'angular-oauth2-oidc';\nimport { AuthorizeGuard } from './authorize.guard';\nimport { RouterLink } from '@angular/router';\n\n@NgModule({\n declarations: [LoginMenuComponent],\n exports: [LoginMenuComponent],\n providers: [],\n imports: [CommonModule, HttpClientModule, OAuthModule.forRoot(), RouterLink]\n})\nexport class SharedAuthModule {\n static forRoot(authorizeOptions: AuthorizeOptions): ModuleWithProviders<SharedAuthModule> {\n return {\n ngModule: SharedAuthModule,\n providers: [\n {\n provide: AuthorizeOptions,\n useValue: authorizeOptions\n },\n AuthorizeService,\n AuthorizeGuard\n ]\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { AuthorizeService } from './authorize.service';\n\n@Injectable()\nexport class AuthorizeInterceptor implements HttpInterceptor {\n accessToken: string | null;\n\n constructor(private readonly authorize: AuthorizeService) {\n this.accessToken = null;\n authorize.getAccessToken().subscribe((value) => (this.accessToken = value));\n }\n\n private static isSameOriginUrl(req: HttpRequest<any>): boolean {\n // It's an absolute url with the same origin.\n if (req.url.startsWith(`${window.location.origin}/`)) {\n return true;\n }\n\n // It's a protocol relative url with the same origin.\n // For example: //www.example.com/api/Products\n if (req.url.startsWith(`//${window.location.host}/`)) {\n return true;\n }\n\n // It's a relative url like /api/Products\n if (/^\\/[^/].*/.test(req.url)) {\n return true;\n }\n\n // It's an absolute or protocol relative url that\n // doesn't have the same origin.\n return false;\n }\n\n // Checks if there is an access_token available in the authorize service\n // and adds it to the request in case it's targeted at the same origin as the\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return this.processRequestWithToken(this.accessToken, req, next);\n }\n\n // single page application.\n private processRequestWithToken(token: string | null, req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!!token && (AuthorizeInterceptor.isSameOriginUrl(req) || this.isKnownServiceUri(req))) {\n req = req.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`\n }\n });\n }\n\n return next.handle(req);\n }\n\n private isKnownServiceUri(req: any): boolean {\n const serviceUris = this.authorize.getServiceUris();\n\n if (serviceUris != null) {\n for (const serviceUri of serviceUris) {\n if (req.url.startsWith(`${serviceUri}`)) {\n return true;\n }\n }\n }\n\n // It's an absolute or protocol relative url that\n // doesn't have the same origin.\n return false;\n }\n}\n","/*\n * Public API Surface of shared-auth\n */\n\nexport * from './lib/authorize.service';\nexport * from './lib/roles';\nexport * from './lib/login-menu/login-menu.component';\nexport * from './lib/shared-auth.module';\nexport * from './lib/authorize.interceptor';\nexport * from './lib/authorize.guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AuthorizeService","i3","i2"],"mappings":"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"}
|
package/lib/authorize.guard.d.ts
CHANGED
|
@@ -8,8 +8,8 @@ export declare class AuthorizeGuard {
|
|
|
8
8
|
constructor(authorizeService: AuthorizeService, router: Router);
|
|
9
9
|
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;
|
|
10
10
|
canActivateChild(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;
|
|
11
|
-
canDeactivate(
|
|
12
|
-
canLoad(
|
|
11
|
+
canDeactivate(_component: unknown, _currentRoute: ActivatedRouteSnapshot, _currentState: RouterStateSnapshot, _nextState?: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;
|
|
12
|
+
canLoad(_route: Route, _segments: UrlSegment[]): Observable<boolean> | Promise<boolean> | boolean;
|
|
13
13
|
private handleAuthorization;
|
|
14
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<AuthorizeGuard, never>;
|
|
15
15
|
static ɵprov: i0.ɵɵInjectableDeclaration<AuthorizeGuard>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meshmakers/shared-auth",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.10-0",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^18.2.8",
|
|
6
6
|
"@angular/core": "^18.2.8",
|
|
@@ -18,8 +18,6 @@
|
|
|
18
18
|
},
|
|
19
19
|
".": {
|
|
20
20
|
"types": "./index.d.ts",
|
|
21
|
-
"esm2022": "./esm2022/meshmakers-shared-auth.mjs",
|
|
22
|
-
"esm": "./esm2022/meshmakers-shared-auth.mjs",
|
|
23
21
|
"default": "./fesm2022/meshmakers-shared-auth.mjs"
|
|
24
22
|
}
|
|
25
23
|
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { firstValueFrom } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./authorize.service";
|
|
5
|
-
import * as i2 from "@angular/router";
|
|
6
|
-
export class AuthorizeGuard {
|
|
7
|
-
authorizeService;
|
|
8
|
-
router;
|
|
9
|
-
constructor(authorizeService, router) {
|
|
10
|
-
this.authorizeService = authorizeService;
|
|
11
|
-
this.router = router;
|
|
12
|
-
}
|
|
13
|
-
canActivate(next, state) {
|
|
14
|
-
const url = state.url;
|
|
15
|
-
return this.handleAuthorization(next, url);
|
|
16
|
-
}
|
|
17
|
-
canActivateChild(next, state) {
|
|
18
|
-
return this.canActivate(next, state);
|
|
19
|
-
}
|
|
20
|
-
canDeactivate(component, currentRoute, currentState, nextState) {
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
|
-
canLoad(route, segments) {
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
async handleAuthorization(route, url) {
|
|
27
|
-
const isAuthenticated = await firstValueFrom(this.authorizeService.getIsAuthenticated());
|
|
28
|
-
if (isAuthenticated) {
|
|
29
|
-
const userRoles = await firstValueFrom(this.authorizeService.getRoles());
|
|
30
|
-
if (route.data['roles'] && !route.data['roles'].filter((value) => userRoles.includes(value))) {
|
|
31
|
-
await this.router.navigate(['']);
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
this.authorizeService.login();
|
|
38
|
-
}
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthorizeGuard, deps: [{ token: i1.AuthorizeService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
42
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthorizeGuard });
|
|
43
|
-
}
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthorizeGuard, decorators: [{
|
|
45
|
-
type: Injectable
|
|
46
|
-
}], ctorParameters: () => [{ type: i1.AuthorizeService }, { type: i2.Router }] });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXplLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVzaG1ha2Vycy9zaGFyZWQtYXV0aC9zcmMvbGliL2F1dGhvcml6ZS5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxjQUFjLEVBQWMsTUFBTSxNQUFNLENBQUM7Ozs7QUFHbEQsTUFBTSxPQUFPLGNBQWM7SUFFTjtJQUNBO0lBRm5CLFlBQ21CLGdCQUFrQyxFQUNsQyxNQUFjO1FBRGQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQzlCLENBQUM7SUFFSixXQUFXLENBQ1QsSUFBNEIsRUFDNUIsS0FBMEI7UUFFMUIsTUFBTSxHQUFHLEdBQVcsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGdCQUFnQixDQUNkLElBQTRCLEVBQzVCLEtBQTBCO1FBRTFCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGFBQWEsQ0FDWCxTQUFrQixFQUNsQixZQUFvQyxFQUNwQyxZQUFpQyxFQUNqQyxTQUErQjtRQUUvQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBWSxFQUFFLFFBQXNCO1FBQzFDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxLQUE2QixFQUFFLEdBQVE7UUFDdkUsTUFBTSxlQUFlLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUN6RixJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sU0FBUyxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDckcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt3R0FoRFUsY0FBYzs0R0FBZCxjQUFjOzs0RkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGUsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsU2VnbWVudCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRob3JpemVTZXJ2aWNlIH0gZnJvbSAnLi9hdXRob3JpemUuc2VydmljZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aG9yaXplR3VhcmQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhvcml6ZVNlcnZpY2U6IEF1dGhvcml6ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgY2FuQWN0aXZhdGUoXG4gICAgbmV4dDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xuICAgIGNvbnN0IHVybDogc3RyaW5nID0gc3RhdGUudXJsO1xuICAgIHJldHVybiB0aGlzLmhhbmRsZUF1dGhvcml6YXRpb24obmV4dCwgdXJsKTtcbiAgfVxuXG4gIGNhbkFjdGl2YXRlQ2hpbGQoXG4gICAgbmV4dDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xuICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKG5leHQsIHN0YXRlKTtcbiAgfVxuXG4gIGNhbkRlYWN0aXZhdGUoXG4gICAgY29tcG9uZW50OiB1bmtub3duLFxuICAgIGN1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBjdXJyZW50U3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsXG4gICAgbmV4dFN0YXRlPzogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2FuTG9hZChyb3V0ZTogUm91dGUsIHNlZ21lbnRzOiBVcmxTZWdtZW50W10pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVBdXRob3JpemF0aW9uKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCB1cmw6IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGlzQXV0aGVudGljYXRlZCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYXV0aG9yaXplU2VydmljZS5nZXRJc0F1dGhlbnRpY2F0ZWQoKSk7XG4gICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgY29uc3QgdXNlclJvbGVzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRob3JpemVTZXJ2aWNlLmdldFJvbGVzKCkpO1xuICAgICAgaWYgKHJvdXRlLmRhdGFbJ3JvbGVzJ10gJiYgIXJvdXRlLmRhdGFbJ3JvbGVzJ10uZmlsdGVyKCh2YWx1ZTogc3RyaW5nKSA9PiB1c2VyUm9sZXMuaW5jbHVkZXModmFsdWUpKSkge1xuICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJyddKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXV0aG9yaXplU2VydmljZS5sb2dpbigpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "./authorize.service";
|
|
4
|
-
export class AuthorizeInterceptor {
|
|
5
|
-
authorize;
|
|
6
|
-
accessToken;
|
|
7
|
-
constructor(authorize) {
|
|
8
|
-
this.authorize = authorize;
|
|
9
|
-
this.accessToken = null;
|
|
10
|
-
authorize.getAccessToken().subscribe((value) => (this.accessToken = value));
|
|
11
|
-
}
|
|
12
|
-
static isSameOriginUrl(req) {
|
|
13
|
-
// It's an absolute url with the same origin.
|
|
14
|
-
if (req.url.startsWith(`${window.location.origin}/`)) {
|
|
15
|
-
return true;
|
|
16
|
-
}
|
|
17
|
-
// It's a protocol relative url with the same origin.
|
|
18
|
-
// For example: //www.example.com/api/Products
|
|
19
|
-
if (req.url.startsWith(`//${window.location.host}/`)) {
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
// It's a relative url like /api/Products
|
|
23
|
-
if (/^\/[^/].*/.test(req.url)) {
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
// It's an absolute or protocol relative url that
|
|
27
|
-
// doesn't have the same origin.
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
// Checks if there is an access_token available in the authorize service
|
|
31
|
-
// and adds it to the request in case it's targeted at the same origin as the
|
|
32
|
-
intercept(req, next) {
|
|
33
|
-
return this.processRequestWithToken(this.accessToken, req, next);
|
|
34
|
-
}
|
|
35
|
-
// single page application.
|
|
36
|
-
processRequestWithToken(token, req, next) {
|
|
37
|
-
if (!!token && (AuthorizeInterceptor.isSameOriginUrl(req) || this.isKnownServiceUri(req))) {
|
|
38
|
-
req = req.clone({
|
|
39
|
-
setHeaders: {
|
|
40
|
-
Authorization: `Bearer ${token}`
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
return next.handle(req);
|
|
45
|
-
}
|
|
46
|
-
isKnownServiceUri(req) {
|
|
47
|
-
const serviceUris = this.authorize.getServiceUris();
|
|
48
|
-
if (serviceUris != null) {
|
|
49
|
-
for (const serviceUri of serviceUris) {
|
|
50
|
-
if (req.url.startsWith(`${serviceUri}`)) {
|
|
51
|
-
return true;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
// It's an absolute or protocol relative url that
|
|
56
|
-
// doesn't have the same origin.
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthorizeInterceptor, deps: [{ token: i1.AuthorizeService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
60
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthorizeInterceptor });
|
|
61
|
-
}
|
|
62
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthorizeInterceptor, decorators: [{
|
|
63
|
-
type: Injectable
|
|
64
|
-
}], ctorParameters: () => [{ type: i1.AuthorizeService }] });
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXplLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVzaG1ha2Vycy9zaGFyZWQtYXV0aC9zcmMvbGliL2F1dGhvcml6ZS5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLG9CQUFvQjtJQUdGO0lBRjdCLFdBQVcsQ0FBZ0I7SUFFM0IsWUFBNkIsU0FBMkI7UUFBM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDdEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVPLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBcUI7UUFDbEQsNkNBQTZDO1FBQzdDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxxREFBcUQ7UUFDckQsOENBQThDO1FBQzlDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCx5Q0FBeUM7UUFDekMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELGlEQUFpRDtRQUNqRCxnQ0FBZ0M7UUFDaEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsd0VBQXdFO0lBQ3hFLDZFQUE2RTtJQUU3RSxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUNoRCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsMkJBQTJCO0lBQ25CLHVCQUF1QixDQUFDLEtBQW9CLEVBQUUsR0FBcUIsRUFBRSxJQUFpQjtRQUM1RixJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxRixHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDZCxVQUFVLEVBQUU7b0JBQ1YsYUFBYSxFQUFFLFVBQVUsS0FBSyxFQUFFO2lCQUNqQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEdBQVE7UUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUVwRCxJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN4QixLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUN4QyxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxpREFBaUQ7UUFDakQsZ0NBQWdDO1FBQ2hDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt3R0FoRVUsb0JBQW9COzRHQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aG9yaXplU2VydmljZSB9IGZyb20gJy4vYXV0aG9yaXplLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aG9yaXplSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nIHwgbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGF1dGhvcml6ZTogQXV0aG9yaXplU2VydmljZSkge1xuICAgIHRoaXMuYWNjZXNzVG9rZW4gPSBudWxsO1xuICAgIGF1dGhvcml6ZS5nZXRBY2Nlc3NUb2tlbigpLnN1YnNjcmliZSgodmFsdWUpID0+ICh0aGlzLmFjY2Vzc1Rva2VuID0gdmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzU2FtZU9yaWdpblVybChyZXE6IEh0dHBSZXF1ZXN0PGFueT4pOiBib29sZWFuIHtcbiAgICAvLyBJdCdzIGFuIGFic29sdXRlIHVybCB3aXRoIHRoZSBzYW1lIG9yaWdpbi5cbiAgICBpZiAocmVxLnVybC5zdGFydHNXaXRoKGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59L2ApKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBJdCdzIGEgcHJvdG9jb2wgcmVsYXRpdmUgdXJsIHdpdGggdGhlIHNhbWUgb3JpZ2luLlxuICAgIC8vIEZvciBleGFtcGxlOiAvL3d3dy5leGFtcGxlLmNvbS9hcGkvUHJvZHVjdHNcbiAgICBpZiAocmVxLnVybC5zdGFydHNXaXRoKGAvLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L2ApKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBJdCdzIGEgcmVsYXRpdmUgdXJsIGxpa2UgL2FwaS9Qcm9kdWN0c1xuICAgIGlmICgvXlxcL1teL10uKi8udGVzdChyZXEudXJsKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gSXQncyBhbiBhYnNvbHV0ZSBvciBwcm90b2NvbCByZWxhdGl2ZSB1cmwgdGhhdFxuICAgIC8vIGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBvcmlnaW4uXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gQ2hlY2tzIGlmIHRoZXJlIGlzIGFuIGFjY2Vzc190b2tlbiBhdmFpbGFibGUgaW4gdGhlIGF1dGhvcml6ZSBzZXJ2aWNlXG4gIC8vIGFuZCBhZGRzIGl0IHRvIHRoZSByZXF1ZXN0IGluIGNhc2UgaXQncyB0YXJnZXRlZCBhdCB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlXG5cbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc1JlcXVlc3RXaXRoVG9rZW4odGhpcy5hY2Nlc3NUb2tlbiwgcmVxLCBuZXh0KTtcbiAgfVxuXG4gIC8vIHNpbmdsZSBwYWdlIGFwcGxpY2F0aW9uLlxuICBwcml2YXRlIHByb2Nlc3NSZXF1ZXN0V2l0aFRva2VuKHRva2VuOiBzdHJpbmcgfCBudWxsLCByZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGlmICghIXRva2VuICYmIChBdXRob3JpemVJbnRlcmNlcHRvci5pc1NhbWVPcmlnaW5VcmwocmVxKSB8fCB0aGlzLmlzS25vd25TZXJ2aWNlVXJpKHJlcSkpKSB7XG4gICAgICByZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWBcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gIH1cblxuICBwcml2YXRlIGlzS25vd25TZXJ2aWNlVXJpKHJlcTogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2VydmljZVVyaXMgPSB0aGlzLmF1dGhvcml6ZS5nZXRTZXJ2aWNlVXJpcygpO1xuXG4gICAgaWYgKHNlcnZpY2VVcmlzICE9IG51bGwpIHtcbiAgICAgIGZvciAoY29uc3Qgc2VydmljZVVyaSBvZiBzZXJ2aWNlVXJpcykge1xuICAgICAgICBpZiAocmVxLnVybC5zdGFydHNXaXRoKGAke3NlcnZpY2VVcml9YCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEl0J3MgYW4gYWJzb2x1dGUgb3IgcHJvdG9jb2wgcmVsYXRpdmUgdXJsIHRoYXRcbiAgICAvLyBkb2Vzbid0IGhhdmUgdGhlIHNhbWUgb3JpZ2luLlxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import { BehaviorSubject, firstValueFrom } from "rxjs";
|
|
3
|
-
import { filter, map } from "rxjs/operators";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "angular-oauth2-oidc";
|
|
6
|
-
export class AuthorizeOptions {
|
|
7
|
-
wellKnownServiceUris;
|
|
8
|
-
// Url of the Identity Provider
|
|
9
|
-
issuer;
|
|
10
|
-
// URL of the SPA to redirect the user to after login
|
|
11
|
-
redirectUri;
|
|
12
|
-
postLogoutRedirectUri;
|
|
13
|
-
// The SPA's id. The SPA is registered with this id at the auth-server
|
|
14
|
-
clientId;
|
|
15
|
-
// set the scope for the permissions the client should request
|
|
16
|
-
// The first three are defined by OIDC. The 4th is a use case-specific one
|
|
17
|
-
scope;
|
|
18
|
-
showDebugInformation;
|
|
19
|
-
sessionChecksEnabled;
|
|
20
|
-
}
|
|
21
|
-
export class AuthorizeService {
|
|
22
|
-
oauthService;
|
|
23
|
-
isAuthenticated = new BehaviorSubject(false);
|
|
24
|
-
authority = new BehaviorSubject(null);
|
|
25
|
-
accessToken = new BehaviorSubject(null);
|
|
26
|
-
user = new BehaviorSubject(null);
|
|
27
|
-
isInitialized = new BehaviorSubject(false);
|
|
28
|
-
isInitializing = new BehaviorSubject(false);
|
|
29
|
-
authorizeOptions = null;
|
|
30
|
-
constructor(oauthService) {
|
|
31
|
-
this.oauthService = oauthService;
|
|
32
|
-
console.debug("AuthorizeService::created");
|
|
33
|
-
this.getUser().subscribe((s) => {
|
|
34
|
-
this.isAuthenticated.next(!(s == null));
|
|
35
|
-
});
|
|
36
|
-
this.oauthService.events.subscribe((e) => {
|
|
37
|
-
console.debug("oauth/oidc event", e);
|
|
38
|
-
});
|
|
39
|
-
this.oauthService.events.pipe(filter((e) => e.type === "session_terminated")).subscribe((_) => {
|
|
40
|
-
console.debug("Your session has been terminated!");
|
|
41
|
-
});
|
|
42
|
-
this.oauthService.events.pipe(filter((e) => e.type === "token_received")).subscribe((_) => {
|
|
43
|
-
this.loadUser();
|
|
44
|
-
});
|
|
45
|
-
this.oauthService.events.pipe(filter((e) => e.type === "session_unchanged")).subscribe((_) => {
|
|
46
|
-
if (this.user.value == null) {
|
|
47
|
-
this.loadUser();
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
this.oauthService.events.pipe(filter((e) => e.type === "logout")).subscribe((_) => {
|
|
51
|
-
this.accessToken.next(null);
|
|
52
|
-
this.user.next(null);
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
isInRole(role) {
|
|
56
|
-
return this.user?.value?.role.includes(role) ?? false;
|
|
57
|
-
}
|
|
58
|
-
getRoles() {
|
|
59
|
-
return this.getUser().pipe(map((u) => (u != null ? u.role : new Array())));
|
|
60
|
-
}
|
|
61
|
-
getServiceUris() {
|
|
62
|
-
return this.authorizeOptions?.wellKnownServiceUris ?? null;
|
|
63
|
-
}
|
|
64
|
-
getAuthority() {
|
|
65
|
-
return this.authority;
|
|
66
|
-
}
|
|
67
|
-
getIsAuthenticated() {
|
|
68
|
-
return this.isAuthenticated;
|
|
69
|
-
}
|
|
70
|
-
getAccessToken() {
|
|
71
|
-
return this.accessToken;
|
|
72
|
-
}
|
|
73
|
-
getUser() {
|
|
74
|
-
return this.user;
|
|
75
|
-
}
|
|
76
|
-
login() {
|
|
77
|
-
this.oauthService.initImplicitFlow();
|
|
78
|
-
}
|
|
79
|
-
logout() {
|
|
80
|
-
this.oauthService.logOut(false);
|
|
81
|
-
}
|
|
82
|
-
async initialize(authorizeOptions) {
|
|
83
|
-
console.debug("AuthorizeService::initialize::started");
|
|
84
|
-
await this.uninitialize();
|
|
85
|
-
if (await firstValueFrom(this.isInitializing)) {
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
if (await firstValueFrom(this.isInitialized)) {
|
|
89
|
-
console.debug("AuthorizeService::initialize::alreadyInitialized");
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
this.isInitializing.next(true);
|
|
93
|
-
try {
|
|
94
|
-
const config = {
|
|
95
|
-
responseType: "code",
|
|
96
|
-
issuer: authorizeOptions.issuer,
|
|
97
|
-
redirectUri: authorizeOptions.redirectUri,
|
|
98
|
-
postLogoutRedirectUri: authorizeOptions.postLogoutRedirectUri,
|
|
99
|
-
clientId: authorizeOptions.clientId,
|
|
100
|
-
scope: authorizeOptions.scope,
|
|
101
|
-
showDebugInformation: authorizeOptions.showDebugInformation,
|
|
102
|
-
sessionChecksEnabled: authorizeOptions.sessionChecksEnabled,
|
|
103
|
-
preserveRequestedRoute: true
|
|
104
|
-
};
|
|
105
|
-
this.authorizeOptions = authorizeOptions;
|
|
106
|
-
this.oauthService.configure(config);
|
|
107
|
-
this.oauthService.setStorage(localStorage);
|
|
108
|
-
console.debug("AuthorizeService::initialize::loadingDiscoveryDocumentAndTryLogin");
|
|
109
|
-
await this.oauthService.loadDiscoveryDocumentAndTryLogin();
|
|
110
|
-
console.debug("AuthorizeService::initialize::setupAutomaticSilentRefresh");
|
|
111
|
-
this.oauthService.setupAutomaticSilentRefresh();
|
|
112
|
-
this.authority.next(authorizeOptions.issuer ?? null);
|
|
113
|
-
this.isInitialized.next(true);
|
|
114
|
-
console.debug("AuthorizeService::initialize::done");
|
|
115
|
-
}
|
|
116
|
-
finally {
|
|
117
|
-
this.isInitializing.next(false);
|
|
118
|
-
}
|
|
119
|
-
console.debug("AuthorizeService::initialize::completed");
|
|
120
|
-
}
|
|
121
|
-
async uninitialize() {
|
|
122
|
-
console.debug("AuthorizeService::uninitialize::started");
|
|
123
|
-
if (await firstValueFrom(this.isInitializing)) {
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
if (!await firstValueFrom(this.isInitialized)) {
|
|
127
|
-
console.debug("AuthorizeService::uninitialize::alreadyUninitialized");
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
try {
|
|
131
|
-
this.isInitializing.next(true);
|
|
132
|
-
this.oauthService.stopAutomaticRefresh();
|
|
133
|
-
this.authorizeOptions = null;
|
|
134
|
-
this.isInitialized.next(false);
|
|
135
|
-
console.debug("AuthorizeService::uninitialize::done");
|
|
136
|
-
}
|
|
137
|
-
finally {
|
|
138
|
-
this.isInitializing.next(false);
|
|
139
|
-
}
|
|
140
|
-
console.debug("AuthorizeService::uninitialize::completed");
|
|
141
|
-
}
|
|
142
|
-
loadUser() {
|
|
143
|
-
const claims = this.oauthService.getIdentityClaims();
|
|
144
|
-
if (!claims) {
|
|
145
|
-
console.error("claims where null when loading identity claims");
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
const user = claims;
|
|
149
|
-
const accessToken = this.oauthService.getAccessToken();
|
|
150
|
-
this.user.next(user);
|
|
151
|
-
this.accessToken.next(accessToken);
|
|
152
|
-
}
|
|
153
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthorizeService, deps: [{ token: i1.OAuthService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
154
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthorizeService });
|
|
155
|
-
}
|
|
156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthorizeService, decorators: [{
|
|
157
|
-
type: Injectable
|
|
158
|
-
}], ctorParameters: () => [{ type: i1.OAuthService }] });
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXplLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC1hdXRoL3NyYy9saWIvYXV0aG9yaXplLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFZN0MsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixvQkFBb0IsQ0FBWTtJQUNoQywrQkFBK0I7SUFDL0IsTUFBTSxDQUFVO0lBQ2hCLHFEQUFxRDtJQUNyRCxXQUFXLENBQVU7SUFDckIscUJBQXFCLENBQVU7SUFDL0Isc0VBQXNFO0lBQ3RFLFFBQVEsQ0FBVTtJQUNsQiw4REFBOEQ7SUFDOUQsMEVBQTBFO0lBQzFFLEtBQUssQ0FBVTtJQUNmLG9CQUFvQixDQUFXO0lBQy9CLG9CQUFvQixDQUFXO0NBQ2hDO0FBR0QsTUFBTSxPQUFPLGdCQUFnQjtJQWNSO0lBYkYsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3RELFNBQVMsR0FBbUMsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBRXJGLFdBQVcsR0FBbUMsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBRXZGLElBQUksR0FBa0MsSUFBSSxlQUFlLENBQWUsSUFBSSxDQUFDLENBQUM7SUFFOUUsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3BELGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUU5RCxnQkFBZ0IsR0FBNEIsSUFBSSxDQUFDO0lBRXpELFlBQ21CLFlBQTBC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bSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IEF1dGhDb25maWcsIE9BdXRoU2VydmljZSB9IGZyb20gXCJhbmd1bGFyLW9hdXRoMi1vaWRjXCI7XG5pbXBvcnQgeyBSb2xlcyB9IGZyb20gXCIuL3JvbGVzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXIge1xuICBuYW1lOiBzdHJpbmc7XG4gIHJvbGU6IHN0cmluZ1tdO1xuICBzdWI6IHN0cmluZztcbiAgaWRwOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgY2xhc3MgQXV0aG9yaXplT3B0aW9ucyB7XG4gIHdlbGxLbm93blNlcnZpY2VVcmlzPzogc3RyaW5nW107XG4gIC8vIFVybCBvZiB0aGUgSWRlbnRpdHkgUHJvdmlkZXJcbiAgaXNzdWVyPzogc3RyaW5nO1xuICAvLyBVUkwgb2YgdGhlIFNQQSB0byByZWRpcmVjdCB0aGUgdXNlciB0byBhZnRlciBsb2dpblxuICByZWRpcmVjdFVyaT86IHN0cmluZztcbiAgcG9zdExvZ291dFJlZGlyZWN0VXJpPzogc3RyaW5nO1xuICAvLyBUaGUgU1BBJ3MgaWQuIFRoZSBTUEEgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgaWQgYXQgdGhlIGF1dGgtc2VydmVyXG4gIGNsaWVudElkPzogc3RyaW5nO1xuICAvLyBzZXQgdGhlIHNjb3BlIGZvciB0aGUgcGVybWlzc2lvbnMgdGhlIGNsaWVudCBzaG91bGQgcmVxdWVzdFxuICAvLyBUaGUgZmlyc3QgdGhyZWUgYXJlIGRlZmluZWQgYnkgT0lEQy4gVGhlIDR0aCBpcyBhIHVzZSBjYXNlLXNwZWNpZmljIG9uZVxuICBzY29wZT86IHN0cmluZztcbiAgc2hvd0RlYnVnSW5mb3JtYXRpb24/OiBib29sZWFuO1xuICBzZXNzaW9uQ2hlY2tzRW5hYmxlZD86IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRob3JpemVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpc0F1dGhlbnRpY2F0ZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRob3JpdHk6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhY2Nlc3NUb2tlbjogQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHVzZXI6IEJlaGF2aW9yU3ViamVjdDxJVXNlciB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJVXNlciB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNJbml0aWFsaXplZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzSW5pdGlhbGl6aW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSBhdXRob3JpemVPcHRpb25zOiBBdXRob3JpemVPcHRpb25zIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBvYXV0aFNlcnZpY2U6IE9BdXRoU2VydmljZVxuICApIHtcbiAgICBjb25zb2xlLmRlYnVnKFwiQXV0aG9yaXplU2VydmljZTo6Y3JlYXRlZFwiKTtcblxuICAgIHRoaXMuZ2V0VXNlcigpLnN1YnNjcmliZSgocykgPT4ge1xuICAgICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWQubmV4dCghKHMgPT0gbnVsbCkpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vYXV0aFNlcnZpY2UuZXZlbnRzLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgY29uc29sZS5kZWJ1ZyhcIm9hdXRoL29pZGMgZXZlbnRcIiwgZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9hdXRoU2VydmljZS5ldmVudHMucGlwZShmaWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gXCJzZXNzaW9uX3Rlcm1pbmF0ZWRcIikpLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgY29uc29sZS5kZWJ1ZyhcIllvdXIgc2Vzc2lvbiBoYXMgYmVlbiB0ZXJtaW5hdGVkIVwiKTtcbiAgICB9KTtcblxuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmV2ZW50cy5waXBlKGZpbHRlcigoZSkgPT4gZS50eXBlID09PSBcInRva2VuX3JlY2VpdmVkXCIpKS5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIHRoaXMubG9hZFVzZXIoKTtcbiAgICB9KTtcblxuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmV2ZW50cy5waXBlKGZpbHRlcigoZSkgPT4gZS50eXBlID09PSBcInNlc3Npb25fdW5jaGFuZ2VkXCIpKS5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIGlmICh0aGlzLnVzZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmxvYWRVc2VyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm9hdXRoU2VydmljZS5ldmVudHMucGlwZShmaWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gXCJsb2dvdXRcIikpLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgdGhpcy5hY2Nlc3NUb2tlbi5uZXh0KG51bGwpO1xuICAgICAgdGhpcy51c2VyLm5leHQobnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaXNJblJvbGUocm9sZTogUm9sZXMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy51c2VyPy52YWx1ZT8ucm9sZS5pbmNsdWRlcyhyb2xlKSA/PyBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb2xlcygpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VXNlcigpLnBpcGUobWFwKCh1KSA9PiAodSAhPSBudWxsID8gdS5yb2xlIDogbmV3IEFycmF5PHN0cmluZz4oKSkpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTZXJ2aWNlVXJpcygpOiBzdHJpbmdbXSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmF1dGhvcml6ZU9wdGlvbnM/LndlbGxLbm93blNlcnZpY2VVcmlzID8/IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXV0aG9yaXR5KCk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhvcml0eTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJc0F1dGhlbnRpY2F0ZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNBdXRoZW50aWNhdGVkO1xuICB9XG5cbiAgcHVibGljIGdldEFjY2Vzc1Rva2VuKCk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmFjY2Vzc1Rva2VuO1xuICB9XG5cbiAgcHVibGljIGdldFVzZXIoKTogT2JzZXJ2YWJsZTxJVXNlciB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyO1xuICB9XG5cbiAgcHVibGljIGxvZ2luKCk6IHZvaWQge1xuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmluaXRJbXBsaWNpdEZsb3coKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2dvdXQoKTogdm9pZCB7XG4gICAgdGhpcy5vYXV0aFNlcnZpY2UubG9nT3V0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplKGF1dGhvcml6ZU9wdGlvbnM6IEF1dGhvcml6ZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmRlYnVnKFwiQXV0aG9yaXplU2VydmljZTo6aW5pdGlhbGl6ZTo6c3RhcnRlZFwiKTtcblxuICAgIGF3YWl0IHRoaXMudW5pbml0aWFsaXplKCk7XG5cbiAgICBpZiAoYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5pc0luaXRpYWxpemluZykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaXNJbml0aWFsaXplZCkpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoXCJBdXRob3JpemVTZXJ2aWNlOjppbml0aWFsaXplOjphbHJlYWR5SW5pdGlhbGl6ZWRcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNJbml0aWFsaXppbmcubmV4dCh0cnVlKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb25maWc6IEF1dGhDb25maWcgPSB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogXCJjb2RlXCIsXG4gICAgICAgIGlzc3VlcjogYXV0aG9yaXplT3B0aW9ucy5pc3N1ZXIsXG4gICAgICAgIHJlZGlyZWN0VXJpOiBhdXRob3JpemVPcHRpb25zLnJlZGlyZWN0VXJpLFxuICAgICAgICBwb3N0TG9nb3V0UmVkaXJlY3RVcmk6IGF1dGhvcml6ZU9wdGlvbnMucG9zdExvZ291dFJlZGlyZWN0VXJpLFxuICAgICAgICBjbGllbnRJZDogYXV0aG9yaXplT3B0aW9ucy5jbGllbnRJZCxcbiAgICAgICAgc2NvcGU6IGF1dGhvcml6ZU9wdGlvbnMuc2NvcGUsXG4gICAgICAgIHNob3dEZWJ1Z0luZm9ybWF0aW9uOiBhdXRob3JpemVPcHRpb25zLnNob3dEZWJ1Z0luZm9ybWF0aW9uLFxuICAgICAgICBzZXNzaW9uQ2hlY2tzRW5hYmxlZDogYXV0aG9yaXplT3B0aW9ucy5zZXNzaW9uQ2hlY2tzRW5hYmxlZCxcbiAgICAgICAgcHJlc2VydmVSZXF1ZXN0ZWRSb3V0ZTogdHJ1ZVxuICAgICAgfTtcblxuICAgICAgdGhpcy5hdXRob3JpemVPcHRpb25zID0gYXV0aG9yaXplT3B0aW9ucztcblxuICAgICAgdGhpcy5vYXV0aFNlcnZpY2UuY29uZmlndXJlKGNvbmZpZyk7XG4gICAgICB0aGlzLm9hdXRoU2VydmljZS5zZXRTdG9yYWdlKGxvY2FsU3RvcmFnZSk7XG4gICAgICBjb25zb2xlLmRlYnVnKFwiQXV0aG9yaXplU2VydmljZTo6aW5pdGlhbGl6ZTo6bG9hZGluZ0Rpc2NvdmVyeURvY3VtZW50QW5kVHJ5TG9naW5cIik7XG4gICAgICBhd2FpdCB0aGlzLm9hdXRoU2VydmljZS5sb2FkRGlzY292ZXJ5RG9jdW1lbnRBbmRUcnlMb2dpbigpO1xuXG4gICAgICBjb25zb2xlLmRlYnVnKFwiQXV0aG9yaXplU2VydmljZTo6aW5pdGlhbGl6ZTo6c2V0dXBBdXRvbWF0aWNTaWxlbnRSZWZyZXNoXCIpO1xuICAgICAgdGhpcy5vYXV0aFNlcnZpY2Uuc2V0dXBBdXRvbWF0aWNTaWxlbnRSZWZyZXNoKCk7XG5cbiAgICAgIHRoaXMuYXV0aG9yaXR5Lm5leHQoYXV0aG9yaXplT3B0aW9ucy5pc3N1ZXIgPz8gbnVsbCk7XG5cblxuICAgICAgdGhpcy5pc0luaXRpYWxpemVkLm5leHQodHJ1ZSk7XG4gICAgICBjb25zb2xlLmRlYnVnKFwiQXV0aG9yaXplU2VydmljZTo6aW5pdGlhbGl6ZTo6ZG9uZVwiKTtcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICB0aGlzLmlzSW5pdGlhbGl6aW5nLm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZGVidWcoXCJBdXRob3JpemVTZXJ2aWNlOjppbml0aWFsaXplOjpjb21wbGV0ZWRcIik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdW5pbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnNvbGUuZGVidWcoXCJBdXRob3JpemVTZXJ2aWNlOjp1bmluaXRpYWxpemU6OnN0YXJ0ZWRcIik7XG5cbiAgICBpZiAoYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5pc0luaXRpYWxpemluZykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmlzSW5pdGlhbGl6ZWQpKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKFwiQXV0aG9yaXplU2VydmljZTo6dW5pbml0aWFsaXplOjphbHJlYWR5VW5pbml0aWFsaXplZFwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5pc0luaXRpYWxpemluZy5uZXh0KHRydWUpO1xuXG4gICAgICB0aGlzLm9hdXRoU2VydmljZS5zdG9wQXV0b21hdGljUmVmcmVzaCgpO1xuXG4gICAgICB0aGlzLmF1dGhvcml6ZU9wdGlvbnMgPSBudWxsO1xuXG4gICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQubmV4dChmYWxzZSk7XG4gICAgICBjb25zb2xlLmRlYnVnKFwiQXV0aG9yaXplU2VydmljZTo6dW5pbml0aWFsaXplOjpkb25lXCIpO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNJbml0aWFsaXppbmcubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgY29uc29sZS5kZWJ1ZyhcIkF1dGhvcml6ZVNlcnZpY2U6OnVuaW5pdGlhbGl6ZTo6Y29tcGxldGVkXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkVXNlcigpOiB2b2lkIHtcbiAgICBjb25zdCBjbGFpbXMgPSB0aGlzLm9hdXRoU2VydmljZS5nZXRJZGVudGl0eUNsYWltcygpO1xuICAgIGlmICghY2xhaW1zKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiY2xhaW1zIHdoZXJlIG51bGwgd2hlbiBsb2FkaW5nIGlkZW50aXR5IGNsYWltc1wiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyID0gY2xhaW1zIGFzIElVc2VyO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gdGhpcy5vYXV0aFNlcnZpY2UuZ2V0QWNjZXNzVG9rZW4oKTtcbiAgICB0aGlzLnVzZXIubmV4dCh1c2VyKTtcbiAgICB0aGlzLmFjY2Vzc1Rva2VuLm5leHQoYWNjZXNzVG9rZW4pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { map } from 'rxjs/operators';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../authorize.service";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
import * as i3 from "@angular/router";
|
|
7
|
-
export class LoginMenuComponent {
|
|
8
|
-
authorizeService;
|
|
9
|
-
isAuthenticated;
|
|
10
|
-
userName;
|
|
11
|
-
constructor(authorizeService) {
|
|
12
|
-
this.authorizeService = authorizeService;
|
|
13
|
-
this.isAuthenticated = this.authorizeService.getIsAuthenticated();
|
|
14
|
-
this.userName = this.authorizeService.getUser().pipe(map((u) => u?.name ?? null));
|
|
15
|
-
}
|
|
16
|
-
ngOnInit() {
|
|
17
|
-
const isIFrame = window.self !== window.top;
|
|
18
|
-
console.log('app-login-menu::created');
|
|
19
|
-
this.isAuthenticated.subscribe((x) => {
|
|
20
|
-
console.log(`isAuthenticated changed to ${x} (iframe ${isIFrame})`);
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
login() {
|
|
24
|
-
this.authorizeService.login();
|
|
25
|
-
}
|
|
26
|
-
logout() {
|
|
27
|
-
this.authorizeService.logout();
|
|
28
|
-
}
|
|
29
|
-
register() { }
|
|
30
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginMenuComponent, deps: [{ token: i1.AuthorizeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
31
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LoginMenuComponent, selector: "mm-login-menu", ngImport: i0, template: "<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
|
32
|
-
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginMenuComponent, decorators: [{
|
|
34
|
-
type: Component,
|
|
35
|
-
args: [{ selector: 'mm-login-menu', template: "<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n" }]
|
|
36
|
-
}], ctorParameters: () => [{ type: i1.AuthorizeService }] });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC1hdXRoL3NyYy9saWIvbG9naW4tbWVudS9sb2dpbi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lc2htYWtlcnMvc2hhcmVkLWF1dGgvc3JjL2xpYi9sb2dpbi1tZW51L2xvZ2luLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBT3JDLE1BQU0sT0FBTyxrQkFBa0I7SUFJQTtJQUh0QixlQUFlLENBQXNCO0lBQ3JDLFFBQVEsQ0FBNEI7SUFFM0MsWUFBNkIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDN0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNsRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFFNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxZQUFZLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sUUFBUSxLQUFVLENBQUM7d0dBM0JmLGtCQUFrQjs0RkFBbEIsa0JBQWtCLHFEQ1YvQixzdkNBdUJBOzs0RkRiYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRob3JpemVTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aG9yaXplLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21tLWxvZ2luLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9naW4tbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xvZ2luLW1lbnUuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBpc0F1dGhlbnRpY2F0ZWQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyB1c2VyTmFtZTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGF1dGhvcml6ZVNlcnZpY2U6IEF1dGhvcml6ZVNlcnZpY2UpIHtcbiAgICB0aGlzLmlzQXV0aGVudGljYXRlZCA9IHRoaXMuYXV0aG9yaXplU2VydmljZS5nZXRJc0F1dGhlbnRpY2F0ZWQoKTtcbiAgICB0aGlzLnVzZXJOYW1lID0gdGhpcy5hdXRob3JpemVTZXJ2aWNlLmdldFVzZXIoKS5waXBlKG1hcCgodSkgPT4gdT8ubmFtZSA/PyBudWxsKSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBpc0lGcmFtZSA9IHdpbmRvdy5zZWxmICE9PSB3aW5kb3cudG9wO1xuXG4gICAgY29uc29sZS5sb2coJ2FwcC1sb2dpbi1tZW51OjpjcmVhdGVkJyk7XG5cbiAgICB0aGlzLmlzQXV0aGVudGljYXRlZC5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGBpc0F1dGhlbnRpY2F0ZWQgY2hhbmdlZCB0byAke3h9IChpZnJhbWUgJHtpc0lGcmFtZX0pYCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbG9naW4oKTogdm9pZCB7XG4gICAgdGhpcy5hdXRob3JpemVTZXJ2aWNlLmxvZ2luKCk7XG4gIH1cblxuICBwdWJsaWMgbG9nb3V0KCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aG9yaXplU2VydmljZS5sb2dvdXQoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlcigpOiB2b2lkIHt9XG59XG4iLCI8dWwgKm5nSWY9XCJpc0F1dGhlbnRpY2F0ZWQgfCBhc3luY1wiIGNsYXNzPVwibmF2YmFyLW5hdlwiPlxuICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBkcm9wZG93blwiPlxuICAgIDxhIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgY2xhc3M9XCJuYXYtbGluayBkcm9wZG93bi10b2dnbGVcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgaHJlZj1cIiNcIlxuICAgICAgIGlkPVwibmF2YmFyRHJvcGRvd25Mb2dpblwiIHJvbGU9XCJidXR0b25cIj5cbiAgICAgIHt7IHVzZXJOYW1lIHwgYXN5bmMgfX0gPGIgY2xhc3M9XCJjYXJldFwiPjwvYj5cbiAgICA8L2E+XG4gICAgPGRpdiBhcmlhLWxhYmVsbGVkYnk9XCJuYXZiYXJEcm9wZG93blwiIGNsYXNzPVwiZHJvcGRvd24tbWVudVwiPlxuICAgICAgPCEtLTxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGFzcC1hY3Rpb249XCJJbmRleFwiIGFzcC1hcmVhPVwiQXV0aGVudGljYXRpb25cIiBhc3AtY29udHJvbGxlcj1cIkdyYW50c1wiPkNsaWVudCBBcHBsaWNhdGlvbiBBY2Nlc3M8L2E+LS0+XG4gICAgICA8IS0tPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgW3JvdXRlckxpbmtdPSdbXCIvYXV0aGVudGljYXRpb24vcHJvZmlsZVwiXScgdGl0bGU9XCJNYW5hZ2VcIj5NYW5hZ2U8L2E+LS0+XG4gICAgICA8IS0tPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgYXNwLWFjdGlvbj1cIkluZGV4XCIgYXNwLWFyZWE9XCJBdXRoZW50aWNhdGlvblwiIGFzcC1jb250cm9sbGVyPVwiRGlhZ25vc3RpY3NcIj5EaWFnbm9zdGljczwvYT4tLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCI+PC9kaXY+XG4gICAgICA8YSAoY2xpY2spPSdsb2dvdXQoKScgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgcm91dGVyTGluaz1cIlwiIHRpdGxlPVwiTG9nb3V0XCI+TG9nb3V0PC9hPlxuICAgIDwvZGl2PlxuICA8L2xpPlxuPC91bD5cbjx1bCAqbmdJZj1cIiEoaXNBdXRoZW50aWNhdGVkIHwgYXN5bmMpXCIgY2xhc3M9XCJuYXZiYXItbmF2XCI+XG4gIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCI+XG4gICAgPGEgKGNsaWNrKT0ncmVnaXN0ZXIoKScgY2xhc3M9XCJuYXYtbGlua1wiIHJvdXRlckxpbms9XCJcIj5SZWdpc3RlcjwvYT5cbiAgPC9saT5cbiAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIj5cbiAgICA8YSAoY2xpY2spPSdsb2dpbigpJyBjbGFzcz1cIm5hdi1saW5rXCIgcm91dGVyTGluaz1cIlwiPkxvZ2luPC9hPlxuICA8L2xpPlxuPC91bD5cbiJdfQ==
|
package/esm2022/lib/roles.mjs
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export var Roles;
|
|
2
|
-
(function (Roles) {
|
|
3
|
-
Roles["AdminPanelManagement"] = "AdminPanelManagement";
|
|
4
|
-
Roles["BotManagement"] = "BotManagement";
|
|
5
|
-
Roles["UserManagement"] = "UserManagement";
|
|
6
|
-
Roles["CommunicationManagement"] = "CommunicationManagement";
|
|
7
|
-
Roles["TenantManagement"] = "TenantManagement";
|
|
8
|
-
Roles["Development"] = "Development";
|
|
9
|
-
})(Roles || (Roles = {}));
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC1hdXRoL3NyYy9saWIvcm9sZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksS0FPWDtBQVBELFdBQVksS0FBSztJQUNmLHNEQUE2QyxDQUFBO0lBQzdDLHdDQUErQixDQUFBO0lBQy9CLDBDQUFpQyxDQUFBO0lBQ2pDLDREQUFtRCxDQUFBO0lBQ25ELDhDQUFxQyxDQUFBO0lBQ3JDLG9DQUEyQixDQUFBO0FBQzdCLENBQUMsRUFQVyxLQUFLLEtBQUwsS0FBSyxRQU9oQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJvbGVzIHtcbiAgQWRtaW5QYW5lbE1hbmFnZW1lbnQgPSAnQWRtaW5QYW5lbE1hbmFnZW1lbnQnLFxuICBCb3RNYW5hZ2VtZW50ID0gJ0JvdE1hbmFnZW1lbnQnLFxuICBVc2VyTWFuYWdlbWVudCA9ICdVc2VyTWFuYWdlbWVudCcsXG4gIENvbW11bmljYXRpb25NYW5hZ2VtZW50ID0gJ0NvbW11bmljYXRpb25NYW5hZ2VtZW50JyxcbiAgVGVuYW50TWFuYWdlbWVudCA9ICdUZW5hbnRNYW5hZ2VtZW50JyxcbiAgRGV2ZWxvcG1lbnQgPSAnRGV2ZWxvcG1lbnQnXG59XG4iXX0=
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { HttpClientModule } from '@angular/common/http';
|
|
4
|
-
import { LoginMenuComponent } from './login-menu/login-menu.component';
|
|
5
|
-
import { AuthorizeOptions, AuthorizeService } from './authorize.service';
|
|
6
|
-
import { OAuthModule } from 'angular-oauth2-oidc';
|
|
7
|
-
import { AuthorizeGuard } from './authorize.guard';
|
|
8
|
-
import { RouterLink } from '@angular/router';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "angular-oauth2-oidc";
|
|
11
|
-
export class SharedAuthModule {
|
|
12
|
-
static forRoot(authorizeOptions) {
|
|
13
|
-
return {
|
|
14
|
-
ngModule: SharedAuthModule,
|
|
15
|
-
providers: [
|
|
16
|
-
{
|
|
17
|
-
provide: AuthorizeOptions,
|
|
18
|
-
useValue: authorizeOptions
|
|
19
|
-
},
|
|
20
|
-
AuthorizeService,
|
|
21
|
-
AuthorizeGuard
|
|
22
|
-
]
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
26
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SharedAuthModule, declarations: [LoginMenuComponent], imports: [CommonModule, HttpClientModule, i1.OAuthModule, RouterLink], exports: [LoginMenuComponent] });
|
|
27
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedAuthModule, imports: [CommonModule, HttpClientModule, OAuthModule.forRoot()] });
|
|
28
|
-
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedAuthModule, decorators: [{
|
|
30
|
-
type: NgModule,
|
|
31
|
-
args: [{
|
|
32
|
-
declarations: [LoginMenuComponent],
|
|
33
|
-
exports: [LoginMenuComponent],
|
|
34
|
-
providers: [],
|
|
35
|
-
imports: [CommonModule, HttpClientModule, OAuthModule.forRoot(), RouterLink]
|
|
36
|
-
}]
|
|
37
|
-
}] });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLWF1dGgubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVzaG1ha2Vycy9zaGFyZWQtYXV0aC9zcmMvbGliL3NoYXJlZC1hdXRoLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVE3QyxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWtDO1FBQy9DLE9BQU87WUFDTCxRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsZ0JBQWdCO29CQUN6QixRQUFRLEVBQUUsZ0JBQWdCO2lCQUMzQjtnQkFDRCxnQkFBZ0I7Z0JBQ2hCLGNBQWM7YUFDZjtTQUNGLENBQUM7SUFDSixDQUFDO3dHQWJVLGdCQUFnQjt5R0FBaEIsZ0JBQWdCLGlCQUxaLGtCQUFrQixhQUd2QixZQUFZLEVBQUUsZ0JBQWdCLGtCQUF5QixVQUFVLGFBRmpFLGtCQUFrQjt5R0FJakIsZ0JBQWdCLFlBRmpCLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFOzs0RkFFcEQsZ0JBQWdCO2tCQU41QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUNsQyxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDN0IsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxVQUFVLENBQUM7aUJBQzdFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTG9naW5NZW51Q29tcG9uZW50IH0gZnJvbSAnLi9sb2dpbi1tZW51L2xvZ2luLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEF1dGhvcml6ZU9wdGlvbnMsIEF1dGhvcml6ZVNlcnZpY2UgfSBmcm9tICcuL2F1dGhvcml6ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9BdXRoTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyBBdXRob3JpemVHdWFyZCB9IGZyb20gJy4vYXV0aG9yaXplLmd1YXJkJztcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtMb2dpbk1lbnVDb21wb25lbnRdLFxuICBleHBvcnRzOiBbTG9naW5NZW51Q29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSHR0cENsaWVudE1vZHVsZSwgT0F1dGhNb2R1bGUuZm9yUm9vdCgpLCBSb3V0ZXJMaW5rXVxufSlcbmV4cG9ydCBjbGFzcyBTaGFyZWRBdXRoTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoYXV0aG9yaXplT3B0aW9uczogQXV0aG9yaXplT3B0aW9ucyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8U2hhcmVkQXV0aE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogU2hhcmVkQXV0aE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQXV0aG9yaXplT3B0aW9ucyxcbiAgICAgICAgICB1c2VWYWx1ZTogYXV0aG9yaXplT3B0aW9uc1xuICAgICAgICB9LFxuICAgICAgICBBdXRob3JpemVTZXJ2aWNlLFxuICAgICAgICBBdXRob3JpemVHdWFyZFxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaG1ha2Vycy1zaGFyZWQtYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21lc2htYWtlcnMvc2hhcmVkLWF1dGgvc3JjL21lc2htYWtlcnMtc2hhcmVkLWF1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of shared-auth
|
|
3
|
-
*/
|
|
4
|
-
export * from './lib/authorize.service';
|
|
5
|
-
export * from './lib/roles';
|
|
6
|
-
export * from './lib/login-menu/login-menu.component';
|
|
7
|
-
export * from './lib/shared-auth.module';
|
|
8
|
-
export * from './lib/authorize.interceptor';
|
|
9
|
-
export * from './lib/authorize.guard';
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21lc2htYWtlcnMvc2hhcmVkLWF1dGgvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHNoYXJlZC1hdXRoXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aG9yaXplLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcm9sZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9naW4tbWVudS9sb2dpbi1tZW51LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtYXV0aC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aG9yaXplLmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGhvcml6ZS5ndWFyZCc7XG4iXX0=
|