@meshmakers/shared-auth 3.2.111-0 → 3.2.113-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 +35 -41
- package/fesm2022/meshmakers-shared-auth.mjs.map +1 -1
- package/index.d.ts +108 -5
- package/package.json +4 -4
- package/lib/authorize.guard.d.ts +0 -16
- package/lib/authorize.interceptor.d.ts +0 -15
- package/lib/authorize.service.d.ts +0 -46
- package/lib/login-menu/login-menu.component.d.ts +0 -16
- package/lib/roles.d.ts +0 -8
- package/lib/shared-auth.module.d.ts +0 -14
- package/public-api.d.ts +0 -6
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Component, NgModule } from '@angular/core';
|
|
2
|
+
import { inject, Injectable, Component, NgModule } from '@angular/core';
|
|
3
3
|
import { BehaviorSubject, firstValueFrom } from 'rxjs';
|
|
4
4
|
import { filter, map } from 'rxjs/operators';
|
|
5
|
-
import * as i1 from 'angular-oauth2-oidc';
|
|
6
|
-
import { OAuthModule } from 'angular-oauth2-oidc';
|
|
7
|
-
import * as
|
|
5
|
+
import * as i1$1 from 'angular-oauth2-oidc';
|
|
6
|
+
import { OAuthService, OAuthModule } from 'angular-oauth2-oidc';
|
|
7
|
+
import * as i1 from '@angular/common';
|
|
8
8
|
import { CommonModule } from '@angular/common';
|
|
9
|
-
import * as i2
|
|
10
|
-
import { RouterLink } from '@angular/router';
|
|
9
|
+
import * as i2 from '@angular/router';
|
|
10
|
+
import { Router, RouterLink } from '@angular/router';
|
|
11
11
|
import { HttpClientModule } from '@angular/common/http';
|
|
12
12
|
|
|
13
13
|
class AuthorizeOptions {
|
|
@@ -26,7 +26,7 @@ class AuthorizeOptions {
|
|
|
26
26
|
sessionChecksEnabled;
|
|
27
27
|
}
|
|
28
28
|
class AuthorizeService {
|
|
29
|
-
oauthService;
|
|
29
|
+
oauthService = inject(OAuthService);
|
|
30
30
|
isAuthenticated = new BehaviorSubject(false);
|
|
31
31
|
authority = new BehaviorSubject(null);
|
|
32
32
|
accessToken = new BehaviorSubject(null);
|
|
@@ -34,8 +34,7 @@ class AuthorizeService {
|
|
|
34
34
|
isInitialized = new BehaviorSubject(false);
|
|
35
35
|
isInitializing = new BehaviorSubject(false);
|
|
36
36
|
authorizeOptions = null;
|
|
37
|
-
constructor(
|
|
38
|
-
this.oauthService = oauthService;
|
|
37
|
+
constructor() {
|
|
39
38
|
console.debug("AuthorizeService::created");
|
|
40
39
|
this.getUser().subscribe((s) => {
|
|
41
40
|
this.isAuthenticated.next(!(s == null));
|
|
@@ -157,12 +156,12 @@ class AuthorizeService {
|
|
|
157
156
|
this.user.next(user);
|
|
158
157
|
this.accessToken.next(accessToken);
|
|
159
158
|
}
|
|
160
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
161
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
159
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AuthorizeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
160
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AuthorizeService });
|
|
162
161
|
}
|
|
163
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AuthorizeService, decorators: [{
|
|
164
163
|
type: Injectable
|
|
165
|
-
}], ctorParameters: () => [
|
|
164
|
+
}], ctorParameters: () => [] });
|
|
166
165
|
|
|
167
166
|
var Roles;
|
|
168
167
|
(function (Roles) {
|
|
@@ -175,11 +174,10 @@ var Roles;
|
|
|
175
174
|
})(Roles || (Roles = {}));
|
|
176
175
|
|
|
177
176
|
class LoginMenuComponent {
|
|
178
|
-
authorizeService;
|
|
177
|
+
authorizeService = inject(AuthorizeService);
|
|
179
178
|
isAuthenticated;
|
|
180
179
|
userName;
|
|
181
|
-
constructor(
|
|
182
|
-
this.authorizeService = authorizeService;
|
|
180
|
+
constructor() {
|
|
183
181
|
this.isAuthenticated = this.authorizeService.getIsAuthenticated();
|
|
184
182
|
this.userName = this.authorizeService.getUser().pipe(map((u) => u?.name ?? null));
|
|
185
183
|
}
|
|
@@ -197,21 +195,17 @@ class LoginMenuComponent {
|
|
|
197
195
|
this.authorizeService.logout();
|
|
198
196
|
}
|
|
199
197
|
register() { }
|
|
200
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
201
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
198
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: LoginMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
199
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.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: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
|
|
202
200
|
}
|
|
203
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
201
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: LoginMenuComponent, decorators: [{
|
|
204
202
|
type: Component,
|
|
205
203
|
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
|
-
}], ctorParameters: () => [
|
|
204
|
+
}], ctorParameters: () => [] });
|
|
207
205
|
|
|
208
206
|
class AuthorizeGuard {
|
|
209
|
-
authorizeService;
|
|
210
|
-
router;
|
|
211
|
-
constructor(authorizeService, router) {
|
|
212
|
-
this.authorizeService = authorizeService;
|
|
213
|
-
this.router = router;
|
|
214
|
-
}
|
|
207
|
+
authorizeService = inject(AuthorizeService);
|
|
208
|
+
router = inject(Router);
|
|
215
209
|
canActivate(next, state) {
|
|
216
210
|
const url = state.url;
|
|
217
211
|
return this.handleAuthorization(next, url);
|
|
@@ -240,12 +234,12 @@ class AuthorizeGuard {
|
|
|
240
234
|
}
|
|
241
235
|
return false;
|
|
242
236
|
}
|
|
243
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
244
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
237
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AuthorizeGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
238
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AuthorizeGuard });
|
|
245
239
|
}
|
|
246
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
240
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AuthorizeGuard, decorators: [{
|
|
247
241
|
type: Injectable
|
|
248
|
-
}]
|
|
242
|
+
}] });
|
|
249
243
|
|
|
250
244
|
class SharedAuthModule {
|
|
251
245
|
static forRoot(authorizeOptions) {
|
|
@@ -261,11 +255,11 @@ class SharedAuthModule {
|
|
|
261
255
|
]
|
|
262
256
|
};
|
|
263
257
|
}
|
|
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: "
|
|
258
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SharedAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
259
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: SharedAuthModule, declarations: [LoginMenuComponent], imports: [CommonModule, HttpClientModule, i1$1.OAuthModule, RouterLink], exports: [LoginMenuComponent] });
|
|
260
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SharedAuthModule, imports: [CommonModule, HttpClientModule, OAuthModule.forRoot()] });
|
|
267
261
|
}
|
|
268
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
262
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SharedAuthModule, decorators: [{
|
|
269
263
|
type: NgModule,
|
|
270
264
|
args: [{
|
|
271
265
|
declarations: [LoginMenuComponent],
|
|
@@ -276,10 +270,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
276
270
|
}] });
|
|
277
271
|
|
|
278
272
|
class AuthorizeInterceptor {
|
|
279
|
-
authorize;
|
|
273
|
+
authorize = inject(AuthorizeService);
|
|
280
274
|
accessToken;
|
|
281
|
-
constructor(
|
|
282
|
-
|
|
275
|
+
constructor() {
|
|
276
|
+
const authorize = this.authorize;
|
|
283
277
|
this.accessToken = null;
|
|
284
278
|
authorize.getAccessToken().subscribe((value) => (this.accessToken = value));
|
|
285
279
|
}
|
|
@@ -330,12 +324,12 @@ class AuthorizeInterceptor {
|
|
|
330
324
|
// doesn't have the same origin.
|
|
331
325
|
return false;
|
|
332
326
|
}
|
|
333
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
334
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
327
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AuthorizeInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
328
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AuthorizeInterceptor });
|
|
335
329
|
}
|
|
336
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
330
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AuthorizeInterceptor, decorators: [{
|
|
337
331
|
type: Injectable
|
|
338
|
-
}], ctorParameters: () => [
|
|
332
|
+
}], ctorParameters: () => [] });
|
|
339
333
|
|
|
340
334
|
/*
|
|
341
335
|
* Public API Surface of shared-auth
|
|
@@ -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 { 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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"}
|
|
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, inject } 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 oauthService = inject(OAuthService);\n\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 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, inject } 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 private readonly authorizeService = inject(AuthorizeService);\n\n public isAuthenticated: Observable<boolean>;\n public userName: Observable<string | null>;\n\n constructor() {\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, inject } 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 private readonly authorizeService = inject(AuthorizeService);\n private readonly router = inject(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, inject } 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 private readonly authorize = inject(AuthorizeService);\n\n accessToken: string | null;\n\n constructor() {\n const authorize = this.authorize;\n\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"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,108 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { OnInit, ModuleWithProviders } from '@angular/core';
|
|
4
|
+
import * as i2 from '@angular/common';
|
|
5
|
+
import * as i3 from '@angular/common/http';
|
|
6
|
+
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
|
|
7
|
+
import * as i4 from 'angular-oauth2-oidc';
|
|
8
|
+
import * as i5 from '@angular/router';
|
|
9
|
+
import { ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Route, UrlSegment } from '@angular/router';
|
|
10
|
+
|
|
11
|
+
declare enum Roles {
|
|
12
|
+
AdminPanelManagement = "AdminPanelManagement",
|
|
13
|
+
BotManagement = "BotManagement",
|
|
14
|
+
UserManagement = "UserManagement",
|
|
15
|
+
CommunicationManagement = "CommunicationManagement",
|
|
16
|
+
TenantManagement = "TenantManagement",
|
|
17
|
+
Development = "Development"
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
interface IUser {
|
|
21
|
+
name: string;
|
|
22
|
+
role: string[];
|
|
23
|
+
sub: string;
|
|
24
|
+
idp: string;
|
|
25
|
+
email: string | null;
|
|
26
|
+
}
|
|
27
|
+
declare class AuthorizeOptions {
|
|
28
|
+
wellKnownServiceUris?: string[];
|
|
29
|
+
issuer?: string;
|
|
30
|
+
redirectUri?: string;
|
|
31
|
+
postLogoutRedirectUri?: string;
|
|
32
|
+
clientId?: string;
|
|
33
|
+
scope?: string;
|
|
34
|
+
showDebugInformation?: boolean;
|
|
35
|
+
sessionChecksEnabled?: boolean;
|
|
36
|
+
}
|
|
37
|
+
declare class AuthorizeService {
|
|
38
|
+
private readonly oauthService;
|
|
39
|
+
private readonly isAuthenticated;
|
|
40
|
+
private readonly authority;
|
|
41
|
+
private readonly accessToken;
|
|
42
|
+
private readonly user;
|
|
43
|
+
private readonly isInitialized;
|
|
44
|
+
private readonly isInitializing;
|
|
45
|
+
private authorizeOptions;
|
|
46
|
+
constructor();
|
|
47
|
+
isInRole(role: Roles): boolean;
|
|
48
|
+
getRoles(): Observable<string[]>;
|
|
49
|
+
getServiceUris(): string[] | null;
|
|
50
|
+
getAuthority(): Observable<string | null>;
|
|
51
|
+
getIsAuthenticated(): Observable<boolean>;
|
|
52
|
+
getAccessToken(): Observable<string | null>;
|
|
53
|
+
getUser(): Observable<IUser | null>;
|
|
54
|
+
login(): void;
|
|
55
|
+
logout(): void;
|
|
56
|
+
initialize(authorizeOptions: AuthorizeOptions): Promise<void>;
|
|
57
|
+
uninitialize(): Promise<void>;
|
|
58
|
+
private loadUser;
|
|
59
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AuthorizeService, never>;
|
|
60
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AuthorizeService>;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
declare class LoginMenuComponent implements OnInit {
|
|
64
|
+
private readonly authorizeService;
|
|
65
|
+
isAuthenticated: Observable<boolean>;
|
|
66
|
+
userName: Observable<string | null>;
|
|
67
|
+
constructor();
|
|
68
|
+
ngOnInit(): void;
|
|
69
|
+
login(): void;
|
|
70
|
+
logout(): void;
|
|
71
|
+
register(): void;
|
|
72
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LoginMenuComponent, never>;
|
|
73
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LoginMenuComponent, "mm-login-menu", never, {}, {}, never, never, false, never>;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
declare class SharedAuthModule {
|
|
77
|
+
static forRoot(authorizeOptions: AuthorizeOptions): ModuleWithProviders<SharedAuthModule>;
|
|
78
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SharedAuthModule, never>;
|
|
79
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<SharedAuthModule, [typeof LoginMenuComponent], [typeof i2.CommonModule, typeof i3.HttpClientModule, typeof i4.OAuthModule, typeof i5.RouterLink], [typeof LoginMenuComponent]>;
|
|
80
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<SharedAuthModule>;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
declare class AuthorizeInterceptor implements HttpInterceptor {
|
|
84
|
+
private readonly authorize;
|
|
85
|
+
accessToken: string | null;
|
|
86
|
+
constructor();
|
|
87
|
+
private static isSameOriginUrl;
|
|
88
|
+
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
|
|
89
|
+
private processRequestWithToken;
|
|
90
|
+
private isKnownServiceUri;
|
|
91
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AuthorizeInterceptor, never>;
|
|
92
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AuthorizeInterceptor>;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
declare class AuthorizeGuard {
|
|
96
|
+
private readonly authorizeService;
|
|
97
|
+
private readonly router;
|
|
98
|
+
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;
|
|
99
|
+
canActivateChild(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;
|
|
100
|
+
canDeactivate(_component: unknown, _currentRoute: ActivatedRouteSnapshot, _currentState: RouterStateSnapshot, _nextState?: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;
|
|
101
|
+
canLoad(_route: Route, _segments: UrlSegment[]): Observable<boolean> | Promise<boolean> | boolean;
|
|
102
|
+
private handleAuthorization;
|
|
103
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AuthorizeGuard, never>;
|
|
104
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AuthorizeGuard>;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export { AuthorizeGuard, AuthorizeInterceptor, AuthorizeOptions, AuthorizeService, LoginMenuComponent, Roles, SharedAuthModule };
|
|
108
|
+
export type { IUser };
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meshmakers/shared-auth",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.113-0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@angular/common": "^
|
|
6
|
-
"@angular/core": "^
|
|
7
|
-
"angular-oauth2-oidc": "^
|
|
5
|
+
"@angular/common": "^20.1.2",
|
|
6
|
+
"@angular/core": "^20.1.2",
|
|
7
|
+
"angular-oauth2-oidc": "^20.0.2"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"tslib": "^2.8.1"
|
package/lib/authorize.guard.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { ActivatedRouteSnapshot, Route, Router, RouterStateSnapshot, UrlSegment, UrlTree } from '@angular/router';
|
|
2
|
-
import { AuthorizeService } from './authorize.service';
|
|
3
|
-
import { Observable } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class AuthorizeGuard {
|
|
6
|
-
private readonly authorizeService;
|
|
7
|
-
private readonly router;
|
|
8
|
-
constructor(authorizeService: AuthorizeService, router: Router);
|
|
9
|
-
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;
|
|
10
|
-
canActivateChild(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;
|
|
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
|
-
private handleAuthorization;
|
|
14
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AuthorizeGuard, never>;
|
|
15
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<AuthorizeGuard>;
|
|
16
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { AuthorizeService } from './authorize.service';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class AuthorizeInterceptor implements HttpInterceptor {
|
|
6
|
-
private readonly authorize;
|
|
7
|
-
accessToken: string | null;
|
|
8
|
-
constructor(authorize: AuthorizeService);
|
|
9
|
-
private static isSameOriginUrl;
|
|
10
|
-
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
|
|
11
|
-
private processRequestWithToken;
|
|
12
|
-
private isKnownServiceUri;
|
|
13
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AuthorizeInterceptor, never>;
|
|
14
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<AuthorizeInterceptor>;
|
|
15
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { Observable } from "rxjs";
|
|
2
|
-
import { OAuthService } from "angular-oauth2-oidc";
|
|
3
|
-
import { Roles } from "./roles";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export interface IUser {
|
|
6
|
-
name: string;
|
|
7
|
-
role: string[];
|
|
8
|
-
sub: string;
|
|
9
|
-
idp: string;
|
|
10
|
-
email: string | null;
|
|
11
|
-
}
|
|
12
|
-
export declare class AuthorizeOptions {
|
|
13
|
-
wellKnownServiceUris?: string[];
|
|
14
|
-
issuer?: string;
|
|
15
|
-
redirectUri?: string;
|
|
16
|
-
postLogoutRedirectUri?: string;
|
|
17
|
-
clientId?: string;
|
|
18
|
-
scope?: string;
|
|
19
|
-
showDebugInformation?: boolean;
|
|
20
|
-
sessionChecksEnabled?: boolean;
|
|
21
|
-
}
|
|
22
|
-
export declare class AuthorizeService {
|
|
23
|
-
private readonly oauthService;
|
|
24
|
-
private readonly isAuthenticated;
|
|
25
|
-
private readonly authority;
|
|
26
|
-
private readonly accessToken;
|
|
27
|
-
private readonly user;
|
|
28
|
-
private readonly isInitialized;
|
|
29
|
-
private readonly isInitializing;
|
|
30
|
-
private authorizeOptions;
|
|
31
|
-
constructor(oauthService: OAuthService);
|
|
32
|
-
isInRole(role: Roles): boolean;
|
|
33
|
-
getRoles(): Observable<string[]>;
|
|
34
|
-
getServiceUris(): string[] | null;
|
|
35
|
-
getAuthority(): Observable<string | null>;
|
|
36
|
-
getIsAuthenticated(): Observable<boolean>;
|
|
37
|
-
getAccessToken(): Observable<string | null>;
|
|
38
|
-
getUser(): Observable<IUser | null>;
|
|
39
|
-
login(): void;
|
|
40
|
-
logout(): void;
|
|
41
|
-
initialize(authorizeOptions: AuthorizeOptions): Promise<void>;
|
|
42
|
-
uninitialize(): Promise<void>;
|
|
43
|
-
private loadUser;
|
|
44
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AuthorizeService, never>;
|
|
45
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<AuthorizeService>;
|
|
46
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { OnInit } from '@angular/core';
|
|
2
|
-
import { AuthorizeService } from '../authorize.service';
|
|
3
|
-
import { Observable } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class LoginMenuComponent implements OnInit {
|
|
6
|
-
private readonly authorizeService;
|
|
7
|
-
isAuthenticated: Observable<boolean>;
|
|
8
|
-
userName: Observable<string | null>;
|
|
9
|
-
constructor(authorizeService: AuthorizeService);
|
|
10
|
-
ngOnInit(): void;
|
|
11
|
-
login(): void;
|
|
12
|
-
logout(): void;
|
|
13
|
-
register(): void;
|
|
14
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<LoginMenuComponent, never>;
|
|
15
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<LoginMenuComponent, "mm-login-menu", never, {}, {}, never, never, false, never>;
|
|
16
|
-
}
|
package/lib/roles.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export declare enum Roles {
|
|
2
|
-
AdminPanelManagement = "AdminPanelManagement",
|
|
3
|
-
BotManagement = "BotManagement",
|
|
4
|
-
UserManagement = "UserManagement",
|
|
5
|
-
CommunicationManagement = "CommunicationManagement",
|
|
6
|
-
TenantManagement = "TenantManagement",
|
|
7
|
-
Development = "Development"
|
|
8
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { ModuleWithProviders } from '@angular/core';
|
|
2
|
-
import { AuthorizeOptions } from './authorize.service';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./login-menu/login-menu.component";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
import * as i3 from "@angular/common/http";
|
|
7
|
-
import * as i4 from "angular-oauth2-oidc";
|
|
8
|
-
import * as i5 from "@angular/router";
|
|
9
|
-
export declare class SharedAuthModule {
|
|
10
|
-
static forRoot(authorizeOptions: AuthorizeOptions): ModuleWithProviders<SharedAuthModule>;
|
|
11
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SharedAuthModule, never>;
|
|
12
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<SharedAuthModule, [typeof i1.LoginMenuComponent], [typeof i2.CommonModule, typeof i3.HttpClientModule, typeof i4.OAuthModule, typeof i5.RouterLink], [typeof i1.LoginMenuComponent]>;
|
|
13
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<SharedAuthModule>;
|
|
14
|
-
}
|
package/public-api.d.ts
DELETED