@meshmakers/shared-auth 0.0.0-0 → 0.0.2304-23001
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/README.md +5 -9
- package/esm2020/lib/authorize.guard.mjs +36 -14
- package/esm2020/lib/authorize.interceptor.mjs +10 -7
- package/esm2020/lib/authorize.service.mjs +56 -32
- package/esm2020/lib/login-menu/login-menu.component.mjs +7 -7
- package/esm2020/lib/shared-auth.module.mjs +4 -4
- package/esm2020/public-api.mjs +1 -1
- package/fesm2015/meshmakers-shared-auth.mjs +132 -76
- package/fesm2015/meshmakers-shared-auth.mjs.map +1 -1
- package/fesm2020/meshmakers-shared-auth.mjs +108 -59
- package/fesm2020/meshmakers-shared-auth.mjs.map +1 -1
- package/lib/authorize.guard.d.ts +10 -5
- package/lib/authorize.interceptor.d.ts +1 -1
- package/lib/authorize.service.d.ts +22 -15
- package/lib/login-menu/login-menu.component.d.ts +2 -2
- package/package.json +9 -4
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable, Inject, Component, NgModule } from '@angular/core';
|
|
3
|
-
import { BehaviorSubject } from 'rxjs';
|
|
4
|
-
import { filter, map
|
|
3
|
+
import { BehaviorSubject, firstValueFrom } from 'rxjs';
|
|
4
|
+
import { filter, map } from 'rxjs/operators';
|
|
5
5
|
import * as i1 from 'angular-oauth2-oidc';
|
|
6
6
|
import { OAuthModule } from 'angular-oauth2-oidc';
|
|
7
7
|
import * as i2 from '@angular/common';
|
|
8
8
|
import { CommonModule } from '@angular/common';
|
|
9
9
|
import { HttpClientModule } from '@angular/common/http';
|
|
10
|
+
import * as i2$1 from '@angular/router';
|
|
10
11
|
|
|
11
12
|
class AuthorizeOptions {
|
|
12
13
|
}
|
|
@@ -16,17 +17,47 @@ class AuthorizeService {
|
|
|
16
17
|
this.oauthService = oauthService;
|
|
17
18
|
this.isAuthenticated = new BehaviorSubject(false);
|
|
18
19
|
this.isAdmin = new BehaviorSubject(false);
|
|
20
|
+
this.isDeveloper = new BehaviorSubject(false);
|
|
21
|
+
this.isManager = new BehaviorSubject(false);
|
|
19
22
|
this.authority = new BehaviorSubject(null);
|
|
20
23
|
this.accessToken = new BehaviorSubject(null);
|
|
21
24
|
this.user = new BehaviorSubject(null);
|
|
25
|
+
this.isInitialized = new BehaviorSubject(false);
|
|
26
|
+
this.isInitializing = new BehaviorSubject(false);
|
|
22
27
|
console.debug("AuthorizeService::created");
|
|
23
28
|
this.getUser().subscribe(s => {
|
|
24
29
|
this.isAuthenticated.next(!!s);
|
|
25
|
-
this.isAdmin.next(!!s && s.role
|
|
30
|
+
this.isAdmin.next(!!s && (s.role.includes("Administrators")));
|
|
31
|
+
this.isDeveloper.next(!!s && (s.role.includes("Developers")));
|
|
32
|
+
this.isManager.next(!!s && s.role.includes("Managers"));
|
|
33
|
+
});
|
|
34
|
+
this.oauthService.events.subscribe(e => {
|
|
35
|
+
// tslint:disable-next-line:no-console
|
|
36
|
+
console.debug('oauth/oidc event', e);
|
|
37
|
+
});
|
|
38
|
+
this.oauthService.events
|
|
39
|
+
.pipe(filter(e => e.type === 'session_terminated'))
|
|
40
|
+
.subscribe(_ => {
|
|
41
|
+
// tslint:disable-next-line:no-console
|
|
42
|
+
console.debug('Your session has been terminated!');
|
|
43
|
+
});
|
|
44
|
+
this.oauthService.events
|
|
45
|
+
.pipe(filter(e => e.type === 'token_received'))
|
|
46
|
+
.subscribe(_ => {
|
|
47
|
+
this.loadUser();
|
|
48
|
+
});
|
|
49
|
+
this.oauthService.events
|
|
50
|
+
.pipe(filter(e => e.type === 'logout'))
|
|
51
|
+
.subscribe(_ => {
|
|
52
|
+
this.accessToken.next(null);
|
|
53
|
+
this.user.next(null);
|
|
26
54
|
});
|
|
27
55
|
}
|
|
56
|
+
getRoles() {
|
|
57
|
+
return this.getUser().pipe(map(u => u != null ? u.role : new Array()));
|
|
58
|
+
}
|
|
28
59
|
getServiceUris() {
|
|
29
|
-
return this.authorizeOptions.wellKnownServiceUris;
|
|
60
|
+
return this.authorizeOptions.wellKnownServiceUris ?? null;
|
|
30
61
|
}
|
|
31
62
|
getAuthority() {
|
|
32
63
|
return this.authority;
|
|
@@ -37,6 +68,12 @@ class AuthorizeService {
|
|
|
37
68
|
getIsAdmin() {
|
|
38
69
|
return this.isAdmin;
|
|
39
70
|
}
|
|
71
|
+
getIsDeveloper() {
|
|
72
|
+
return this.isDeveloper;
|
|
73
|
+
}
|
|
74
|
+
getIsManager() {
|
|
75
|
+
return this.isManager;
|
|
76
|
+
}
|
|
40
77
|
getAccessToken() {
|
|
41
78
|
return this.accessToken;
|
|
42
79
|
}
|
|
@@ -49,8 +86,15 @@ class AuthorizeService {
|
|
|
49
86
|
logout() {
|
|
50
87
|
this.oauthService.logOut(false);
|
|
51
88
|
}
|
|
52
|
-
initialize() {
|
|
89
|
+
async initialize() {
|
|
53
90
|
console.debug("AuthorizeService::initialize::started");
|
|
91
|
+
if (await firstValueFrom(this.isInitializing)) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (await firstValueFrom(this.isInitialized)) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
this.isInitializing.next(true);
|
|
54
98
|
const config = {
|
|
55
99
|
responseType: 'code',
|
|
56
100
|
issuer: this.authorizeOptions.issuer,
|
|
@@ -63,33 +107,14 @@ class AuthorizeService {
|
|
|
63
107
|
};
|
|
64
108
|
this.oauthService.configure(config);
|
|
65
109
|
this.oauthService.setStorage(localStorage);
|
|
66
|
-
this.oauthService.loadDiscoveryDocumentAndTryLogin();
|
|
110
|
+
await this.oauthService.loadDiscoveryDocumentAndTryLogin();
|
|
67
111
|
this.oauthService.setupAutomaticSilentRefresh();
|
|
68
|
-
this.oauthService.events.subscribe(e => {
|
|
69
|
-
// tslint:disable-next-line:no-console
|
|
70
|
-
console.debug('oauth/oidc event', e);
|
|
71
|
-
});
|
|
72
|
-
this.oauthService.events
|
|
73
|
-
.pipe(filter(e => e.type === 'session_terminated'))
|
|
74
|
-
.subscribe(e => {
|
|
75
|
-
// tslint:disable-next-line:no-console
|
|
76
|
-
console.debug('Your session has been terminated!');
|
|
77
|
-
});
|
|
78
|
-
this.oauthService.events
|
|
79
|
-
.pipe(filter(e => e.type === 'token_received'))
|
|
80
|
-
.subscribe(e => {
|
|
81
|
-
this.loadUser();
|
|
82
|
-
});
|
|
83
|
-
this.oauthService.events
|
|
84
|
-
.pipe(filter(e => e.type === 'logout'))
|
|
85
|
-
.subscribe(e => {
|
|
86
|
-
this.accessToken.next(null);
|
|
87
|
-
this.user.next(null);
|
|
88
|
-
});
|
|
89
112
|
if (this.oauthService.hasValidAccessToken()) {
|
|
90
113
|
this.loadUser();
|
|
91
114
|
}
|
|
92
|
-
this.authority.next(this.authorizeOptions.issuer);
|
|
115
|
+
this.authority.next(this.authorizeOptions.issuer ?? null);
|
|
116
|
+
this.isInitializing.next(false);
|
|
117
|
+
this.isInitialized.next(true);
|
|
93
118
|
console.debug("AuthorizeService::initialize::done");
|
|
94
119
|
}
|
|
95
120
|
loadUser() {
|
|
@@ -104,9 +129,9 @@ class AuthorizeService {
|
|
|
104
129
|
this.accessToken.next(accessToken);
|
|
105
130
|
}
|
|
106
131
|
}
|
|
107
|
-
AuthorizeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
108
|
-
AuthorizeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
132
|
+
AuthorizeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AuthorizeService, deps: [{ token: AuthorizeOptions }, { token: i1.OAuthService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
133
|
+
AuthorizeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AuthorizeService });
|
|
134
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AuthorizeService, decorators: [{
|
|
110
135
|
type: Injectable
|
|
111
136
|
}], ctorParameters: function () { return [{ type: AuthorizeOptions, decorators: [{
|
|
112
137
|
type: Inject,
|
|
@@ -116,13 +141,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImpor
|
|
|
116
141
|
class LoginMenuComponent {
|
|
117
142
|
constructor(authorizeService) {
|
|
118
143
|
this.authorizeService = authorizeService;
|
|
144
|
+
this.isAuthenticated = this.authorizeService.getIsAuthenticated();
|
|
145
|
+
this.userName = this.authorizeService.getUser().pipe(map(u => u && u.name));
|
|
146
|
+
this.isAdmin = this.authorizeService.getIsAdmin();
|
|
119
147
|
}
|
|
120
148
|
ngOnInit() {
|
|
121
149
|
const isIFrame = window.self !== window.top;
|
|
122
150
|
console.log("app-login-menu::created");
|
|
123
|
-
this.isAuthenticated = this.authorizeService.getIsAuthenticated();
|
|
124
|
-
this.userName = this.authorizeService.getUser().pipe(map(u => u && u.name));
|
|
125
|
-
this.isAdmin = this.authorizeService.getIsAdmin();
|
|
126
151
|
this.isAuthenticated.subscribe(x => {
|
|
127
152
|
console.log(`isAuthenticated changed to ${x} (iframe ${isIFrame})`);
|
|
128
153
|
});
|
|
@@ -136,32 +161,53 @@ class LoginMenuComponent {
|
|
|
136
161
|
register() {
|
|
137
162
|
}
|
|
138
163
|
}
|
|
139
|
-
LoginMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
140
|
-
LoginMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
141
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
164
|
+
LoginMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: LoginMenuComponent, deps: [{ token: AuthorizeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
165
|
+
LoginMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: LoginMenuComponent, selector: "app-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: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: LoginMenuComponent, decorators: [{
|
|
142
167
|
type: Component,
|
|
143
168
|
args: [{ selector: 'app-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" }]
|
|
144
169
|
}], ctorParameters: function () { return [{ type: AuthorizeService }]; } });
|
|
145
170
|
|
|
146
171
|
class AuthorizeGuard {
|
|
147
|
-
constructor(
|
|
148
|
-
this.
|
|
172
|
+
constructor(authorizeService, router) {
|
|
173
|
+
this.authorizeService = authorizeService;
|
|
174
|
+
this.router = router;
|
|
175
|
+
}
|
|
176
|
+
canActivate(next, state) {
|
|
177
|
+
let url = state.url;
|
|
178
|
+
return this.handleAuthorization(next, url);
|
|
179
|
+
}
|
|
180
|
+
canActivateChild(next, state) {
|
|
181
|
+
return this.canActivate(next, state);
|
|
149
182
|
}
|
|
150
|
-
|
|
151
|
-
return
|
|
152
|
-
.pipe(tap(isAuthenticated => this.handleAuthorization(isAuthenticated)));
|
|
183
|
+
canDeactivate(component, currentRoute, currentState, nextState) {
|
|
184
|
+
return true;
|
|
153
185
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
186
|
+
canLoad(route, segments) {
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
async handleAuthorization(route, url) {
|
|
190
|
+
await this.authorizeService.initialize();
|
|
191
|
+
const isAuthenticated = await firstValueFrom(this.authorizeService.getIsAuthenticated());
|
|
192
|
+
if (isAuthenticated) {
|
|
193
|
+
const userRoles = await firstValueFrom(this.authorizeService.getRoles());
|
|
194
|
+
if (route.data['roles'] && !route.data['roles'].filter((value) => userRoles.includes(value))) {
|
|
195
|
+
this.router.navigate(['']);
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
this.authorizeService.login();
|
|
157
202
|
}
|
|
203
|
+
return false;
|
|
158
204
|
}
|
|
159
205
|
}
|
|
160
|
-
AuthorizeGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
161
|
-
AuthorizeGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
162
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
206
|
+
AuthorizeGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AuthorizeGuard, deps: [{ token: AuthorizeService }, { token: i2$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
207
|
+
AuthorizeGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AuthorizeGuard });
|
|
208
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AuthorizeGuard, decorators: [{
|
|
163
209
|
type: Injectable
|
|
164
|
-
}], ctorParameters: function () { return [{ type: AuthorizeService }]; } });
|
|
210
|
+
}], ctorParameters: function () { return [{ type: AuthorizeService }, { type: i2$1.Router }]; } });
|
|
165
211
|
|
|
166
212
|
class SharedAuthModule {
|
|
167
213
|
static forRoot(authorizeOptions) {
|
|
@@ -178,13 +224,13 @@ class SharedAuthModule {
|
|
|
178
224
|
};
|
|
179
225
|
}
|
|
180
226
|
}
|
|
181
|
-
SharedAuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
182
|
-
SharedAuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
227
|
+
SharedAuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SharedAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
228
|
+
SharedAuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: SharedAuthModule, declarations: [LoginMenuComponent], imports: [CommonModule,
|
|
183
229
|
HttpClientModule, i1.OAuthModule], exports: [LoginMenuComponent] });
|
|
184
|
-
SharedAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
230
|
+
SharedAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SharedAuthModule, imports: [CommonModule,
|
|
185
231
|
HttpClientModule,
|
|
186
232
|
OAuthModule.forRoot()] });
|
|
187
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
233
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SharedAuthModule, decorators: [{
|
|
188
234
|
type: NgModule,
|
|
189
235
|
args: [{
|
|
190
236
|
declarations: [LoginMenuComponent],
|
|
@@ -201,6 +247,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImpor
|
|
|
201
247
|
class AuthorizeInterceptor {
|
|
202
248
|
constructor(authorize) {
|
|
203
249
|
this.authorize = authorize;
|
|
250
|
+
this.accessToken = null;
|
|
204
251
|
authorize.getAccessToken().subscribe(value => this.accessToken = value);
|
|
205
252
|
}
|
|
206
253
|
static isSameOriginUrl(req) {
|
|
@@ -239,9 +286,11 @@ class AuthorizeInterceptor {
|
|
|
239
286
|
}
|
|
240
287
|
isKnownServiceUri(req) {
|
|
241
288
|
const serviceUris = this.authorize.getServiceUris();
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
289
|
+
if (serviceUris) {
|
|
290
|
+
for (let i = 0; i < serviceUris.length; i++) {
|
|
291
|
+
if (req.url.startsWith(`${serviceUris[i]}`)) {
|
|
292
|
+
return true;
|
|
293
|
+
}
|
|
245
294
|
}
|
|
246
295
|
}
|
|
247
296
|
// It's an absolute or protocol relative url that
|
|
@@ -249,9 +298,9 @@ class AuthorizeInterceptor {
|
|
|
249
298
|
return false;
|
|
250
299
|
}
|
|
251
300
|
}
|
|
252
|
-
AuthorizeInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
253
|
-
AuthorizeInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
254
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
301
|
+
AuthorizeInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AuthorizeInterceptor, deps: [{ token: AuthorizeService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
302
|
+
AuthorizeInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AuthorizeInterceptor });
|
|
303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AuthorizeInterceptor, decorators: [{
|
|
255
304
|
type: Injectable
|
|
256
305
|
}], ctorParameters: function () { return [{ type: AuthorizeService }]; } });
|
|
257
306
|
|
|
@@ -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/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 {Inject, Injectable} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\nimport {filter} from 'rxjs/operators';\nimport {AuthConfig, OAuthService} from \"angular-oauth2-oidc\";\n\nexport interface IUser {\n name: string;\n role: string;\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 isAuthenticated: BehaviorSubject<boolean> = new BehaviorSubject(false);\n private isAdmin: BehaviorSubject<boolean> = new BehaviorSubject(false);\n private authority: BehaviorSubject<string> = new BehaviorSubject(null);\n private accessToken: BehaviorSubject<string> = new BehaviorSubject(null);\n private user: BehaviorSubject<IUser> = new BehaviorSubject(null);\n\n constructor(@Inject(AuthorizeOptions) private authorizeOptions: AuthorizeOptions, private oauthService: OAuthService) {\n console.debug(\"AuthorizeService::created\");\n this.getUser().subscribe(s => {\n this.isAuthenticated.next(!!s);\n this.isAdmin.next(!!s && s.role === \"Administrators\");\n });\n }\n\n public getServiceUris(): Array<string> {\n return this.authorizeOptions.wellKnownServiceUris;\n }\n\n public getAuthority(): BehaviorSubject<string> {\n return this.authority;\n }\n\n public getIsAuthenticated(): BehaviorSubject<boolean> {\n return this.isAuthenticated;\n }\n\n public getIsAdmin(): BehaviorSubject<boolean> {\n return this.isAdmin;\n }\n\n public getAccessToken(): BehaviorSubject<string> {\n return this.accessToken;\n }\n\n public getUser(): BehaviorSubject<IUser> {\n return this.user;\n }\n\n public login() {\n this.oauthService.initImplicitFlow();\n }\n\n public logout() {\n this.oauthService.logOut(false);\n }\n\n\n public initialize() {\n\n console.debug(\"AuthorizeService::initialize::started\");\n\n const config: AuthConfig = {\n responseType: 'code',\n issuer: this.authorizeOptions.issuer,\n redirectUri: this.authorizeOptions.redirectUri,\n postLogoutRedirectUri: this.authorizeOptions.postLogoutRedirectUri,\n clientId: this.authorizeOptions.clientId,\n scope: this.authorizeOptions.scope,\n showDebugInformation: this.authorizeOptions.showDebugInformation,\n sessionChecksEnabled: this.authorizeOptions.sessionChecksEnabled\n };\n\n this.oauthService.configure(config);\n this.oauthService.setStorage(localStorage);\n this.oauthService.loadDiscoveryDocumentAndTryLogin();\n\n this.oauthService.setupAutomaticSilentRefresh();\n\n this.oauthService.events.subscribe(e => {\n // tslint:disable-next-line:no-console\n console.debug('oauth/oidc event', e);\n });\n\n this.oauthService.events\n .pipe(filter(e => e.type === 'session_terminated'))\n .subscribe(e => {\n // tslint:disable-next-line:no-console\n console.debug('Your session has been terminated!');\n });\n\n this.oauthService.events\n .pipe(filter(e => e.type === 'token_received'))\n .subscribe(e => {\n this.loadUser();\n });\n\n this.oauthService.events\n .pipe(filter(e => e.type === 'logout'))\n .subscribe(e => {\n this.accessToken.next(null);\n this.user.next(null);\n });\n\n if (this.oauthService.hasValidAccessToken()) {\n this.loadUser();\n }\n\n this.authority.next(this.authorizeOptions.issuer);\n\n console.debug(\"AuthorizeService::initialize::done\");\n\n }\n\n private loadUser() {\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 = <IUser>claims;\n const accessToken = this.oauthService.getAccessToken();\n this.user.next(user);\n this.accessToken.next(accessToken);\n }\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: 'app-login-menu',\n templateUrl: './login-menu.component.html',\n styleUrls: ['./login-menu.component.css']\n})\nexport class LoginMenuComponent implements OnInit {\n public isAuthenticated: BehaviorSubject<boolean>;\n public userName: Observable<string>;\n public isAdmin: Observable<boolean>;\n\n constructor(private authorizeService: AuthorizeService) {\n }\n\n ngOnInit() {\n const isIFrame = window.self !== window.top;\n\n console.log(\"app-login-menu::created\");\n\n this.isAuthenticated = this.authorizeService.getIsAuthenticated();\n this.userName = this.authorizeService.getUser().pipe(map(u => u && u.name));\n this.isAdmin = this.authorizeService.getIsAdmin();\n\n this.isAuthenticated.subscribe(x => {\n\n console.log(`isAuthenticated changed to ${x} (iframe ${isIFrame})`);\n });\n }\n\n public login() {\n this.authorizeService.login();\n }\n\n public logout() {\n this.authorizeService.logout();\n }\n\n public register() {\n\n }\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, CanActivate, RouterStateSnapshot} from '@angular/router';\nimport {AuthorizeService} from './authorize.service';\nimport {tap} from 'rxjs/operators';\n\n@Injectable()\nexport class AuthorizeGuard implements CanActivate {\n constructor(private authorize: AuthorizeService) {\n }\n\n canActivate(\n _next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot): any {\n return this.authorize.getIsAuthenticated()\n .pipe(tap(isAuthenticated => this.handleAuthorization(isAuthenticated)));\n }\n\n private handleAuthorization(isAuthenticated: boolean) {\n if (!isAuthenticated) {\n this.authorize.login();\n }\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\";\n\n@NgModule({\n declarations: [LoginMenuComponent],\n exports: [LoginMenuComponent],\n providers: [],\n imports: [\n CommonModule,\n HttpClientModule,\n OAuthModule.forRoot()\n ]\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\n accessToken: string;\n\n constructor(private authorize: AuthorizeService) {\n\n authorize.getAccessToken().subscribe(value => this.accessToken = value);\n\n }\n\n private static isSameOriginUrl(req: any) {\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, req: HttpRequest<any>, next: HttpHandler) {\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) {\n\n const serviceUris = this.authorize.getServiceUris();\n\n for (let i = 0; i < serviceUris.length; i++) {\n if (req.url.startsWith(`${serviceUris[i]}`)) {\n return true;\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/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"],"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/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 {Inject, Injectable} from '@angular/core';\nimport {BehaviorSubject, firstValueFrom, Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\nimport {AuthConfig, OAuthService} from \"angular-oauth2-oidc\";\n\nexport interface IUser {\n name: string;\n role: string[];\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 isAuthenticated: BehaviorSubject<boolean> = new BehaviorSubject(false);\n private isAdmin: BehaviorSubject<boolean> = new BehaviorSubject(false);\n private isDeveloper: BehaviorSubject<boolean> = new BehaviorSubject(false);\n private isManager: BehaviorSubject<boolean> = new BehaviorSubject(false);\n private authority: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);\n private accessToken: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);\n private user: BehaviorSubject<IUser | null> = new BehaviorSubject<IUser | null>(null);\n private isInitialized : BehaviorSubject<boolean> = new BehaviorSubject(false);\n private isInitializing : BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n constructor(@Inject(AuthorizeOptions) private authorizeOptions: AuthorizeOptions, private oauthService: OAuthService) {\n console.debug(\"AuthorizeService::created\");\n\n this.getUser().subscribe(s => {\n this.isAuthenticated.next(!!s);\n this.isAdmin.next(!!s && (s.role.includes(\"Administrators\")));\n this.isDeveloper.next(!!s && (s.role.includes(\"Developers\")));\n this.isManager.next(!!s && s.role.includes(\"Managers\"));\n });\n\n this.oauthService.events.subscribe(e => {\n // tslint:disable-next-line:no-console\n console.debug('oauth/oidc event', e);\n });\n\n this.oauthService.events\n .pipe(filter(e => e.type === 'session_terminated'))\n .subscribe(_ => {\n // tslint:disable-next-line:no-console\n console.debug('Your session has been terminated!');\n });\n\n this.oauthService.events\n .pipe(filter(e => e.type === 'token_received'))\n .subscribe(_ => {\n this.loadUser();\n });\n\n this.oauthService.events\n .pipe(filter(e => e.type === 'logout'))\n .subscribe(_ => {\n this.accessToken.next(null);\n this.user.next(null);\n });\n\n }\n\n public getRoles(): Observable<Array<string>>{\n return this.getUser().pipe(\n map(u=> u != null ? u.role : new Array<string>())\n );\n }\n\n public getServiceUris(): Array<string> | null {\n return this.authorizeOptions.wellKnownServiceUris ?? null;\n }\n\n public getAuthority(): BehaviorSubject<string | null> {\n return this.authority;\n }\n\n public getIsAuthenticated(): BehaviorSubject<boolean> {\n return this.isAuthenticated;\n }\n\n public getIsAdmin(): BehaviorSubject<boolean> {\n return this.isAdmin;\n }\n\n public getIsDeveloper(): BehaviorSubject<boolean> {\n return this.isDeveloper;\n }\n\n public getIsManager(): BehaviorSubject<boolean> {\n return this.isManager;\n }\n\n public getAccessToken(): BehaviorSubject<string | null> {\n return this.accessToken;\n }\n\n public getUser(): BehaviorSubject<IUser | null> {\n return this.user;\n }\n\n public login() {\n this.oauthService.initImplicitFlow();\n }\n\n public logout() {\n this.oauthService.logOut(false);\n }\n\n\n public async initialize() {\n\n console.debug(\"AuthorizeService::initialize::started\");\n\n if (await firstValueFrom(this.isInitializing)) {\n return\n }\n if (await firstValueFrom(this.isInitialized)) {\n return;\n }\n this.isInitializing.next(true);\n\n const config: AuthConfig = {\n responseType: 'code',\n issuer: this.authorizeOptions.issuer,\n redirectUri: this.authorizeOptions.redirectUri,\n postLogoutRedirectUri: this.authorizeOptions.postLogoutRedirectUri,\n clientId: this.authorizeOptions.clientId,\n scope: this.authorizeOptions.scope,\n showDebugInformation: this.authorizeOptions.showDebugInformation,\n sessionChecksEnabled: this.authorizeOptions.sessionChecksEnabled\n };\n\n this.oauthService.configure(config);\n this.oauthService.setStorage(localStorage);\n await this.oauthService.loadDiscoveryDocumentAndTryLogin();\n\n this.oauthService.setupAutomaticSilentRefresh();\n\n if (this.oauthService.hasValidAccessToken()) {\n this.loadUser();\n }\n\n this.authority.next(this.authorizeOptions.issuer ?? null);\n this.isInitializing.next(false);\n this.isInitialized.next(true);\n\n console.debug(\"AuthorizeService::initialize::done\");\n }\n\n private loadUser() {\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 = <IUser>claims;\n const accessToken = this.oauthService.getAccessToken();\n this.user.next(user);\n this.accessToken.next(accessToken);\n }\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: 'app-login-menu',\n templateUrl: './login-menu.component.html',\n styleUrls: ['./login-menu.component.css']\n})\nexport class LoginMenuComponent implements OnInit {\n public isAuthenticated: BehaviorSubject<boolean>;\n public userName: Observable<string | null>;\n public isAdmin: Observable<boolean>;\n\n constructor(private authorizeService: AuthorizeService) {\n this.isAuthenticated = this.authorizeService.getIsAuthenticated();\n this.userName = this.authorizeService.getUser().pipe(map(u => u && u.name));\n this.isAdmin = this.authorizeService.getIsAdmin();\n }\n\n ngOnInit() {\n const isIFrame = window.self !== window.top;\n\n console.log(\"app-login-menu::created\");\n\n this.isAuthenticated.subscribe(x => {\n\n console.log(`isAuthenticated changed to ${x} (iframe ${isIFrame})`);\n });\n }\n\n public login() {\n this.authorizeService.login();\n }\n\n public logout() {\n this.authorizeService.logout();\n }\n\n public register() {\n\n }\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 {\n ActivatedRouteSnapshot,\n CanActivate,\n CanActivateChild,\n CanDeactivate,\n CanLoad, Route,\n Router,\n RouterStateSnapshot, UrlSegment,\n UrlTree\n} from '@angular/router';\nimport {AuthorizeService} from './authorize.service';\nimport {firstValueFrom, lastValueFrom, Observable} from \"rxjs\";\n\n@Injectable()\nexport class AuthorizeGuard implements CanActivate, CanActivateChild, CanDeactivate<unknown>, CanLoad {\n constructor(private authorizeService: AuthorizeService, private router: Router) {\n }\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n let url: string = state.url;\n return this.handleAuthorization(next, url);\n }\n\n canActivateChild(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot): 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): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return true;\n }\n\n canLoad(\n route: Route,\n segments: UrlSegment[]): Observable<boolean> | Promise<boolean> | boolean {\n return true;\n }\n\n private async handleAuthorization(route: ActivatedRouteSnapshot, url: any): Promise<boolean> {\n\n await this.authorizeService.initialize()\n\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 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\";\n\n@NgModule({\n declarations: [LoginMenuComponent],\n exports: [LoginMenuComponent],\n providers: [],\n imports: [\n CommonModule,\n HttpClientModule,\n OAuthModule.forRoot()\n ]\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\n accessToken: string | null;\n\n constructor(private authorize: AuthorizeService) {\n\n this.accessToken = null;\n authorize.getAccessToken().subscribe(value => this.accessToken = value);\n\n }\n\n private static isSameOriginUrl(req: any) {\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) {\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) {\n\n const serviceUris = this.authorize.getServiceUris();\n\n if (serviceUris) {\n for (let i = 0; i < serviceUris.length; i++) {\n if (req.url.startsWith(`${serviceUris[i]}`)) {\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/login-menu/login-menu.component';\nexport * from './lib/shared-auth.module';\nexport * from './lib/authorize.interceptor';\nexport * from './lib/authorize.guard';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AuthorizeService","i2"],"mappings":"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"}
|
package/lib/authorize.guard.d.ts
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot } from '@angular/router';
|
|
1
|
+
import { ActivatedRouteSnapshot, CanActivate, CanActivateChild, CanDeactivate, CanLoad, Route, Router, RouterStateSnapshot, UrlSegment, UrlTree } from '@angular/router';
|
|
2
2
|
import { AuthorizeService } from './authorize.service';
|
|
3
|
+
import { Observable } from "rxjs";
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class AuthorizeGuard implements CanActivate {
|
|
5
|
-
private
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export declare class AuthorizeGuard implements CanActivate, CanActivateChild, CanDeactivate<unknown>, CanLoad {
|
|
6
|
+
private authorizeService;
|
|
7
|
+
private 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;
|
|
8
13
|
private handleAuthorization;
|
|
9
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<AuthorizeGuard, never>;
|
|
10
15
|
static ɵprov: i0.ɵɵInjectableDeclaration<AuthorizeGuard>;
|
|
@@ -4,7 +4,7 @@ import { AuthorizeService } from './authorize.service';
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class AuthorizeInterceptor implements HttpInterceptor {
|
|
6
6
|
private authorize;
|
|
7
|
-
accessToken: string;
|
|
7
|
+
accessToken: string | null;
|
|
8
8
|
constructor(authorize: AuthorizeService);
|
|
9
9
|
private static isSameOriginUrl;
|
|
10
10
|
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
|
|
@@ -1,38 +1,45 @@
|
|
|
1
|
-
import { BehaviorSubject } from 'rxjs';
|
|
1
|
+
import { BehaviorSubject, Observable } from 'rxjs';
|
|
2
2
|
import { OAuthService } from "angular-oauth2-oidc";
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export interface IUser {
|
|
5
5
|
name: string;
|
|
6
|
-
role: string;
|
|
6
|
+
role: string[];
|
|
7
7
|
}
|
|
8
8
|
export declare class AuthorizeOptions {
|
|
9
|
-
wellKnownServiceUris
|
|
10
|
-
issuer
|
|
11
|
-
redirectUri
|
|
12
|
-
postLogoutRedirectUri
|
|
13
|
-
clientId
|
|
14
|
-
scope
|
|
15
|
-
showDebugInformation
|
|
16
|
-
sessionChecksEnabled
|
|
9
|
+
wellKnownServiceUris?: string[];
|
|
10
|
+
issuer?: string;
|
|
11
|
+
redirectUri?: string;
|
|
12
|
+
postLogoutRedirectUri?: string;
|
|
13
|
+
clientId?: string;
|
|
14
|
+
scope?: string;
|
|
15
|
+
showDebugInformation?: boolean;
|
|
16
|
+
sessionChecksEnabled?: boolean;
|
|
17
17
|
}
|
|
18
18
|
export declare class AuthorizeService {
|
|
19
19
|
private authorizeOptions;
|
|
20
20
|
private oauthService;
|
|
21
21
|
private isAuthenticated;
|
|
22
22
|
private isAdmin;
|
|
23
|
+
private isDeveloper;
|
|
24
|
+
private isManager;
|
|
23
25
|
private authority;
|
|
24
26
|
private accessToken;
|
|
25
27
|
private user;
|
|
28
|
+
private isInitialized;
|
|
29
|
+
private isInitializing;
|
|
26
30
|
constructor(authorizeOptions: AuthorizeOptions, oauthService: OAuthService);
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
getRoles(): Observable<Array<string>>;
|
|
32
|
+
getServiceUris(): Array<string> | null;
|
|
33
|
+
getAuthority(): BehaviorSubject<string | null>;
|
|
29
34
|
getIsAuthenticated(): BehaviorSubject<boolean>;
|
|
30
35
|
getIsAdmin(): BehaviorSubject<boolean>;
|
|
31
|
-
|
|
32
|
-
|
|
36
|
+
getIsDeveloper(): BehaviorSubject<boolean>;
|
|
37
|
+
getIsManager(): BehaviorSubject<boolean>;
|
|
38
|
+
getAccessToken(): BehaviorSubject<string | null>;
|
|
39
|
+
getUser(): BehaviorSubject<IUser | null>;
|
|
33
40
|
login(): void;
|
|
34
41
|
logout(): void;
|
|
35
|
-
initialize(): void
|
|
42
|
+
initialize(): Promise<void>;
|
|
36
43
|
private loadUser;
|
|
37
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<AuthorizeService, never>;
|
|
38
45
|
static ɵprov: i0.ɵɵInjectableDeclaration<AuthorizeService>;
|
|
@@ -5,7 +5,7 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
export declare class LoginMenuComponent implements OnInit {
|
|
6
6
|
private authorizeService;
|
|
7
7
|
isAuthenticated: BehaviorSubject<boolean>;
|
|
8
|
-
userName: Observable<string>;
|
|
8
|
+
userName: Observable<string | null>;
|
|
9
9
|
isAdmin: Observable<boolean>;
|
|
10
10
|
constructor(authorizeService: AuthorizeService);
|
|
11
11
|
ngOnInit(): void;
|
|
@@ -13,5 +13,5 @@ export declare class LoginMenuComponent implements OnInit {
|
|
|
13
13
|
logout(): void;
|
|
14
14
|
register(): void;
|
|
15
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<LoginMenuComponent, never>;
|
|
16
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<LoginMenuComponent, "app-login-menu", never, {}, {}, never, never, false>;
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LoginMenuComponent, "app-login-menu", never, {}, {}, never, never, false, never>;
|
|
17
17
|
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meshmakers/shared-auth",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2304-23001",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^15.2.0",
|
|
6
|
+
"@angular/core": "^15.2.0",
|
|
7
|
+
"angular-oauth2-oidc": "15.0.1"
|
|
8
|
+
},
|
|
4
9
|
"dependencies": {
|
|
5
|
-
"tslib": "^2.
|
|
10
|
+
"tslib": "^2.3.0"
|
|
6
11
|
},
|
|
12
|
+
"sideEffects": false,
|
|
7
13
|
"module": "fesm2015/meshmakers-shared-auth.mjs",
|
|
8
14
|
"es2020": "fesm2020/meshmakers-shared-auth.mjs",
|
|
9
15
|
"esm2020": "esm2020/meshmakers-shared-auth.mjs",
|
|
@@ -22,6 +28,5 @@
|
|
|
22
28
|
"node": "./fesm2015/meshmakers-shared-auth.mjs",
|
|
23
29
|
"default": "./fesm2020/meshmakers-shared-auth.mjs"
|
|
24
30
|
}
|
|
25
|
-
}
|
|
26
|
-
"sideEffects": false
|
|
31
|
+
}
|
|
27
32
|
}
|