ngx-oauth 2.2.2 → 3.0.2
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/esm2020/lib/components/login/oauth-login.component.mjs +3 -3
- package/esm2020/lib/models/index.mjs +25 -2
- package/esm2020/lib/oauth.module.mjs +15 -36
- package/esm2020/lib/services/oauth.interceptor.mjs +4 -4
- package/esm2020/lib/services/oauth.service.mjs +43 -45
- package/fesm2015/ngx-oauth.mjs +84 -82
- package/fesm2015/ngx-oauth.mjs.map +1 -1
- package/fesm2020/ngx-oauth.mjs +81 -83
- package/fesm2020/ngx-oauth.mjs.map +1 -1
- package/lib/components/login/oauth-login.component.d.ts +2 -2
- package/lib/models/index.d.ts +14 -9
- package/lib/oauth.module.d.ts +1 -1
- package/lib/services/oauth.service.d.ts +4 -4
- package/package.json +7 -7
- package/ngx-oauth.d.ts +0 -5
package/fesm2015/ngx-oauth.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, Injectable, Inject, EventEmitter, Component, ViewEncapsulation, Input, Output, ContentChild, HostListener, PLATFORM_ID, Optional, NgModule } from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, Injectable, Inject, EventEmitter, Component, ViewEncapsulation, Input, Output, ContentChild, HostListener, PLATFORM_ID, Optional, NgModule } from '@angular/core';
|
|
3
3
|
import { __awaiter } from 'tslib';
|
|
4
4
|
import * as i1 from '@angular/common/http';
|
|
5
5
|
import { HttpHeaders, HttpParams, HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
|
|
6
6
|
import { filter, map, switchMap, shareReplay, tap, catchError, concatMap, delay } from 'rxjs/operators';
|
|
7
|
-
import { ReplaySubject, of, EMPTY, from, noop, throwError, Subscription, take } from 'rxjs';
|
|
7
|
+
import { ReplaySubject, of, EMPTY, from, noop, firstValueFrom, throwError, Subscription, take } from 'rxjs';
|
|
8
8
|
import * as i2 from '@angular/common';
|
|
9
9
|
import { isPlatformBrowser, CommonModule } from '@angular/common';
|
|
10
10
|
import * as i3 from '@angular/forms';
|
|
@@ -17,6 +17,28 @@ const LOCATION = new InjectionToken('Location');
|
|
|
17
17
|
const STORAGE = new InjectionToken('Storage');
|
|
18
18
|
const OAUTH_CONFIG = new InjectionToken('OAuthConfig');
|
|
19
19
|
const OAUTH_TOKEN = new InjectionToken('OAuthToken');
|
|
20
|
+
class OAuthConfig {
|
|
21
|
+
}
|
|
22
|
+
OAuthConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: OAuthConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
+
OAuthConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: OAuthConfig, providedIn: 'root', useFactory: () => inject(OAUTH_CONFIG).reduce((p, c) => (Object.assign(Object.assign({}, p), c)), {}) });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: OAuthConfig, decorators: [{
|
|
25
|
+
type: Injectable,
|
|
26
|
+
args: [{
|
|
27
|
+
providedIn: 'root',
|
|
28
|
+
useFactory: () => inject(OAUTH_CONFIG).reduce((p, c) => (Object.assign(Object.assign({}, p), c)), {})
|
|
29
|
+
}]
|
|
30
|
+
}] });
|
|
31
|
+
const provideOAuthConfig = (config = {}) => ({
|
|
32
|
+
provide: OAUTH_CONFIG,
|
|
33
|
+
useValue: config,
|
|
34
|
+
multi: true
|
|
35
|
+
});
|
|
36
|
+
const provideOAuthConfigFactory = (factory, deps) => ({
|
|
37
|
+
provide: OAUTH_CONFIG,
|
|
38
|
+
useFactory: factory,
|
|
39
|
+
deps: deps,
|
|
40
|
+
multi: true
|
|
41
|
+
});
|
|
20
42
|
var OAuthType;
|
|
21
43
|
(function (OAuthType) {
|
|
22
44
|
OAuthType["RESOURCE"] = "password";
|
|
@@ -85,7 +107,7 @@ class OAuthService {
|
|
|
85
107
|
if (config && config.clientId) {
|
|
86
108
|
const { issuerPath, scope } = config;
|
|
87
109
|
if (issuerPath) {
|
|
88
|
-
return this.http.get(`${issuerPath}/.well-known/openid-configuration`).pipe(tap(v => this.set(this.type, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, v.authorization_endpoint && { authorizePath: v.authorization_endpoint } || {}), v.token_endpoint && { tokenPath: v.token_endpoint } || {}), v.revocation_endpoint && { revokePath: v.revocation_endpoint } || {}), v.code_challenge_methods_supported && { pkce: v.code_challenge_methods_supported.indexOf('S256') > -1 } || {}), v.userinfo_endpoint && { userPath: v.userinfo_endpoint } || {}), v.introspection_endpoint && { introspectionPath: v.introspection_endpoint } || {}), v.end_session_endpoint && { logoutPath: v.end_session_endpoint } || {}), scope && {} || { scope: 'openid' }))), map(() => this.authConfig.config));
|
|
110
|
+
return this.http.get(`${issuerPath}/.well-known/openid-configuration`).pipe(tap(v => this.type && this.set(this.type, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, v.authorization_endpoint && { authorizePath: v.authorization_endpoint } || {}), v.token_endpoint && { tokenPath: v.token_endpoint } || {}), v.revocation_endpoint && { revokePath: v.revocation_endpoint } || {}), v.code_challenge_methods_supported && { pkce: v.code_challenge_methods_supported.indexOf('S256') > -1 } || {}), v.userinfo_endpoint && { userPath: v.userinfo_endpoint } || {}), v.introspection_endpoint && { introspectionPath: v.introspection_endpoint } || {}), v.end_session_endpoint && { logoutPath: v.end_session_endpoint } || {}), scope && {} || { scope: 'openid' }))), map(() => this.authConfig.config));
|
|
89
111
|
}
|
|
90
112
|
return of(config);
|
|
91
113
|
}
|
|
@@ -120,7 +142,7 @@ class OAuthService {
|
|
|
120
142
|
const { clientId, clientSecret, tokenPath, scope } = config;
|
|
121
143
|
const codeVerifier = savedToken && savedToken.codeVerifier;
|
|
122
144
|
this.http.post(tokenPath, new HttpParams({
|
|
123
|
-
fromObject: Object.assign(Object.assign(Object.assign(Object.assign({ code: parameters === null || parameters === void 0 ? void 0 : parameters
|
|
145
|
+
fromObject: Object.assign(Object.assign(Object.assign(Object.assign({ code: parameters === null || parameters === void 0 ? void 0 : parameters['code'], client_id: clientId }, clientSecret && { client_secret: clientSecret } || {}), { redirect_uri: `${origin}${pathname}`, grant_type: 'authorization_code' }), scope && { scope } || {}), codeVerifier && { code_verifier: codeVerifier } || {})
|
|
124
146
|
}), { headers: REQUEST_HEADER }).pipe(catchError((err) => {
|
|
125
147
|
this.token = err;
|
|
126
148
|
this.status = OAuthStatus.DENIED;
|
|
@@ -156,7 +178,7 @@ class OAuthService {
|
|
|
156
178
|
login(parameters) {
|
|
157
179
|
return __awaiter(this, void 0, void 0, function* () {
|
|
158
180
|
if (this.isResourceType(parameters)) {
|
|
159
|
-
this.resourceLogin(parameters);
|
|
181
|
+
yield this.resourceLogin(parameters);
|
|
160
182
|
}
|
|
161
183
|
else if (this.isAuthorizationCodeType(parameters)) {
|
|
162
184
|
yield this.authorizationCodeLogin(parameters);
|
|
@@ -165,7 +187,7 @@ class OAuthService {
|
|
|
165
187
|
yield this.implicitLogin(parameters);
|
|
166
188
|
}
|
|
167
189
|
else if (this.isClientCredentialType()) {
|
|
168
|
-
this.clientCredentialLogin();
|
|
190
|
+
yield this.clientCredentialLogin();
|
|
169
191
|
}
|
|
170
192
|
});
|
|
171
193
|
}
|
|
@@ -214,25 +236,36 @@ class OAuthService {
|
|
|
214
236
|
get ignorePaths() {
|
|
215
237
|
return this.authConfig.ignorePaths || [];
|
|
216
238
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
239
|
+
clientCredentialLogin() {
|
|
240
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
241
|
+
const { clientId, clientSecret, tokenPath, scope } = this.authConfig.config;
|
|
242
|
+
yield firstValueFrom(this.http.post(tokenPath, new HttpParams({
|
|
243
|
+
fromObject: Object.assign({ client_id: clientId, client_secret: clientSecret, grant_type: OAuthType.CLIENT_CREDENTIAL }, scope ? { scope } : {})
|
|
244
|
+
}), { headers: REQUEST_HEADER }).pipe(catchError((err) => {
|
|
245
|
+
this.token = err;
|
|
246
|
+
this.status = OAuthStatus.DENIED;
|
|
247
|
+
return EMPTY;
|
|
248
|
+
}), tap(params => {
|
|
249
|
+
this.token = params;
|
|
250
|
+
this.status = OAuthStatus.AUTHORIZED;
|
|
251
|
+
})));
|
|
230
252
|
});
|
|
231
253
|
}
|
|
232
|
-
|
|
254
|
+
resourceLogin(parameters) {
|
|
233
255
|
return __awaiter(this, void 0, void 0, function* () {
|
|
234
|
-
const
|
|
235
|
-
|
|
256
|
+
const { clientId, clientSecret, tokenPath, scope } = this.authConfig.config;
|
|
257
|
+
const { username, password } = parameters;
|
|
258
|
+
yield firstValueFrom(this.http.post(tokenPath, new HttpParams({
|
|
259
|
+
fromObject: Object.assign(Object.assign(Object.assign(Object.assign({ client_id: clientId }, clientSecret && { client_secret: clientSecret } || {}), { grant_type: OAuthType.RESOURCE }), scope && { scope } || {}), { username,
|
|
260
|
+
password })
|
|
261
|
+
}), { headers: REQUEST_HEADER }).pipe(catchError(err => {
|
|
262
|
+
this.token = err;
|
|
263
|
+
this.status = OAuthStatus.DENIED;
|
|
264
|
+
return EMPTY;
|
|
265
|
+
}), tap(params => {
|
|
266
|
+
this.token = params;
|
|
267
|
+
this.status = OAuthStatus.AUTHORIZED;
|
|
268
|
+
})));
|
|
236
269
|
});
|
|
237
270
|
}
|
|
238
271
|
implicitLogin(parameters) {
|
|
@@ -241,17 +274,10 @@ class OAuthService {
|
|
|
241
274
|
this.location.replace(authUrl);
|
|
242
275
|
});
|
|
243
276
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
}), { headers: REQUEST_HEADER }).pipe(catchError((err) => {
|
|
249
|
-
this.token = err;
|
|
250
|
-
this.status = OAuthStatus.DENIED;
|
|
251
|
-
return EMPTY;
|
|
252
|
-
})).subscribe(params => {
|
|
253
|
-
this.token = params;
|
|
254
|
-
this.status = OAuthStatus.AUTHORIZED;
|
|
277
|
+
authorizationCodeLogin(parameters) {
|
|
278
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
279
|
+
const authUrl = yield this.toAuthorizationUrl(parameters, OAuthType.AUTHORIZATION_CODE);
|
|
280
|
+
this.location.replace(authUrl);
|
|
255
281
|
});
|
|
256
282
|
}
|
|
257
283
|
isClientCredentialType() {
|
|
@@ -300,14 +326,14 @@ class OAuthService {
|
|
|
300
326
|
checkResponse(token, parameters) {
|
|
301
327
|
this.emitState(parameters);
|
|
302
328
|
this.cleanLocationHash();
|
|
303
|
-
if (!parameters || parameters
|
|
329
|
+
if (!parameters || parameters['error']) {
|
|
304
330
|
return false;
|
|
305
331
|
}
|
|
306
|
-
if (token && token.nonce && parameters
|
|
307
|
-
const jwtToken = jwt(parameters
|
|
332
|
+
if (token && token.nonce && parameters['access_token']) {
|
|
333
|
+
const jwtToken = jwt(parameters['access_token']);
|
|
308
334
|
return token.nonce === jwtToken.nonce;
|
|
309
335
|
}
|
|
310
|
-
return parameters
|
|
336
|
+
return parameters['access_token'] || parameters['code'];
|
|
311
337
|
}
|
|
312
338
|
set token(token) {
|
|
313
339
|
this._token = token;
|
|
@@ -377,15 +403,12 @@ class OAuthService {
|
|
|
377
403
|
}
|
|
378
404
|
}
|
|
379
405
|
}
|
|
380
|
-
OAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
381
|
-
OAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
382
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
406
|
+
OAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: OAuthService, deps: [{ token: i1.HttpClient }, { token: i0.NgZone }, { token: OAuthConfig }, { token: LOCATION }, { token: i2.Location }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
407
|
+
OAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: OAuthService });
|
|
408
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: OAuthService, decorators: [{
|
|
383
409
|
type: Injectable
|
|
384
410
|
}], ctorParameters: function () {
|
|
385
|
-
return [{ type: i1.HttpClient }, { type: i0.NgZone }, { type:
|
|
386
|
-
type: Inject,
|
|
387
|
-
args: [OAUTH_CONFIG]
|
|
388
|
-
}] }, { type: Location, decorators: [{
|
|
411
|
+
return [{ type: i1.HttpClient }, { type: i0.NgZone }, { type: OAuthConfig }, { type: Location, decorators: [{
|
|
389
412
|
type: Inject,
|
|
390
413
|
args: [LOCATION]
|
|
391
414
|
}] }, { type: i2.Location }];
|
|
@@ -435,9 +458,9 @@ class OAuthInterceptor {
|
|
|
435
458
|
return false;
|
|
436
459
|
}
|
|
437
460
|
}
|
|
438
|
-
OAuthInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
439
|
-
OAuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
440
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
461
|
+
OAuthInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: OAuthInterceptor, deps: [{ token: OAuthService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
462
|
+
OAuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: OAuthInterceptor });
|
|
463
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: OAuthInterceptor, decorators: [{
|
|
441
464
|
type: Injectable
|
|
442
465
|
}], ctorParameters: function () { return [{ type: OAuthService }]; } });
|
|
443
466
|
|
|
@@ -511,9 +534,9 @@ class OAuthLoginComponent {
|
|
|
511
534
|
this.collapse = false;
|
|
512
535
|
}
|
|
513
536
|
}
|
|
514
|
-
OAuthLoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
515
|
-
OAuthLoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
516
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
537
|
+
OAuthLoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: OAuthLoginComponent, deps: [{ token: OAuthService }, { token: i2.Location }, { token: LOCATION }], target: i0.ɵɵFactoryTarget.Component });
|
|
538
|
+
OAuthLoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.5", type: OAuthLoginComponent, selector: "oauth-login", inputs: { i18n: "i18n", redirectUri: "redirectUri", useLogoutUrl: "useLogoutUrl", state: "state", profileName$: "profileName$" }, outputs: { stateChange: "stateChange" }, host: { listeners: { "window:keydown.escape": "keyboardEvent()" } }, queries: [{ propertyName: "loginTemplate", first: true, predicate: ["login"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"state$ | async\"></ng-container>\r\n<ng-container *ngIf=\"loginTemplate; else defaultLogin\"\r\n [ngTemplateOutlet]=\"loginTemplate\"\r\n [ngTemplateOutletContext]=\"{login: loginFunction, logout: logoutFunction, status: status$ | async}\">\r\n</ng-container>\r\n<ng-template #defaultLogin>\r\n <ng-container *ngIf=\"status$ | async as status\">\r\n <ng-container *ngIf=\"type === OAuthType.RESOURCE; else noResource\">\r\n <div class=\"oauth dropdown text-end p-3 {{collapse ? 'show': ''}}\">\r\n <button class=\"btn btn-link p-0 dropdown-toggle\"\r\n (click)=\"status === OAuthStatus.AUTHORIZED ? logout() : toggleCollapse()\">\r\n <ng-container *ngTemplateOutlet=\"message\"></ng-container>\r\n </button>\r\n <div class=\"dropdown-menu mr-3 {{collapse ? 'show': ''}}\">\r\n <form class=\"p-3\" #form=\"ngForm\"\r\n *ngIf=\"status === OAuthStatus.NOT_AUTHORIZED || status === OAuthStatus.DENIED\"\r\n (submit)=\"login({username: username, password: password})\">\r\n <div class=\"mb-3\">\r\n <input type=\"text\"\r\n class=\"form-control\"\r\n name=\"username\"\r\n required\r\n [(ngModel)]=\"username\"\r\n [placeholder]=\"i18n.username\">\r\n </div>\r\n <div class=\"mb-3\">\r\n <input type=\"password\"\r\n class=\"form-control\"\r\n name=\"password\"\r\n required\r\n [(ngModel)]=\"password\"\r\n [placeholder]=\"i18n.password\">\r\n </div>\r\n <div class=\"text-end\">\r\n <button type=\"submit\"\r\n class=\"btn btn-primary\"\r\n [disabled]=\"form.invalid\">{{i18n.submit}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-template #noResource>\r\n <a role=\"button\" class=\"oauth\"\r\n (click)=\"status === OAuthStatus.AUTHORIZED ? logout() : login({redirectUri: redirectUri, state:state})\">\r\n <ng-container *ngTemplateOutlet=\"message\"></ng-container>\r\n </a>\r\n </ng-template>\r\n\r\n <ng-template #message>\r\n <span *ngIf=\"status === OAuthStatus.NOT_AUTHORIZED\" class=\"not-authorized\">{{i18n.notAuthorized}}</span>\r\n <span *ngIf=\"status === OAuthStatus.AUTHORIZED\" class=\"authorized\">\r\n <span class=\"welcome\">{{i18n.authorized}} </span>\r\n <strong class=\"profile-name\" [innerHTML]=\"profileName\"></strong>\r\n </span>\r\n <span *ngIf=\"status === OAuthStatus.DENIED\" class=\"denied\">{{i18n.denied}}</span>\r\n </ng-template>\r\n </ng-container>\r\n</ng-template>\r\n\r\n", styles: [".oauth .dropdown-menu{left:auto;right:0;box-shadow:0 5px 10px #0003;min-width:250px}.oauth .dropdown-menu:before{content:\"\";display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:#0003;position:absolute;top:-7px;left:auto;right:15px}.oauth .dropdown-menu:after{content:\"\";display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:auto;right:16px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None });
|
|
539
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: OAuthLoginComponent, decorators: [{
|
|
517
540
|
type: Component,
|
|
518
541
|
args: [{ selector: 'oauth-login', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"state$ | async\"></ng-container>\r\n<ng-container *ngIf=\"loginTemplate; else defaultLogin\"\r\n [ngTemplateOutlet]=\"loginTemplate\"\r\n [ngTemplateOutletContext]=\"{login: loginFunction, logout: logoutFunction, status: status$ | async}\">\r\n</ng-container>\r\n<ng-template #defaultLogin>\r\n <ng-container *ngIf=\"status$ | async as status\">\r\n <ng-container *ngIf=\"type === OAuthType.RESOURCE; else noResource\">\r\n <div class=\"oauth dropdown text-end p-3 {{collapse ? 'show': ''}}\">\r\n <button class=\"btn btn-link p-0 dropdown-toggle\"\r\n (click)=\"status === OAuthStatus.AUTHORIZED ? logout() : toggleCollapse()\">\r\n <ng-container *ngTemplateOutlet=\"message\"></ng-container>\r\n </button>\r\n <div class=\"dropdown-menu mr-3 {{collapse ? 'show': ''}}\">\r\n <form class=\"p-3\" #form=\"ngForm\"\r\n *ngIf=\"status === OAuthStatus.NOT_AUTHORIZED || status === OAuthStatus.DENIED\"\r\n (submit)=\"login({username: username, password: password})\">\r\n <div class=\"mb-3\">\r\n <input type=\"text\"\r\n class=\"form-control\"\r\n name=\"username\"\r\n required\r\n [(ngModel)]=\"username\"\r\n [placeholder]=\"i18n.username\">\r\n </div>\r\n <div class=\"mb-3\">\r\n <input type=\"password\"\r\n class=\"form-control\"\r\n name=\"password\"\r\n required\r\n [(ngModel)]=\"password\"\r\n [placeholder]=\"i18n.password\">\r\n </div>\r\n <div class=\"text-end\">\r\n <button type=\"submit\"\r\n class=\"btn btn-primary\"\r\n [disabled]=\"form.invalid\">{{i18n.submit}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-template #noResource>\r\n <a role=\"button\" class=\"oauth\"\r\n (click)=\"status === OAuthStatus.AUTHORIZED ? logout() : login({redirectUri: redirectUri, state:state})\">\r\n <ng-container *ngTemplateOutlet=\"message\"></ng-container>\r\n </a>\r\n </ng-template>\r\n\r\n <ng-template #message>\r\n <span *ngIf=\"status === OAuthStatus.NOT_AUTHORIZED\" class=\"not-authorized\">{{i18n.notAuthorized}}</span>\r\n <span *ngIf=\"status === OAuthStatus.AUTHORIZED\" class=\"authorized\">\r\n <span class=\"welcome\">{{i18n.authorized}} </span>\r\n <strong class=\"profile-name\" [innerHTML]=\"profileName\"></strong>\r\n </span>\r\n <span *ngIf=\"status === OAuthStatus.DENIED\" class=\"denied\">{{i18n.denied}}</span>\r\n </ng-template>\r\n </ng-container>\r\n</ng-template>\r\n\r\n", styles: [".oauth .dropdown-menu{left:auto;right:0;box-shadow:0 5px 10px #0003;min-width:250px}.oauth .dropdown-menu:before{content:\"\";display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:#0003;position:absolute;top:-7px;left:auto;right:15px}.oauth .dropdown-menu:after{content:\"\";display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:auto;right:16px}\n"] }]
|
|
519
542
|
}], ctorParameters: function () {
|
|
@@ -601,7 +624,7 @@ const defaultConfig = (storage) => {
|
|
|
601
624
|
};
|
|
602
625
|
};
|
|
603
626
|
class OAuthModule {
|
|
604
|
-
static forRoot(config) {
|
|
627
|
+
static forRoot(config = {}) {
|
|
605
628
|
return {
|
|
606
629
|
ngModule: OAuthModule,
|
|
607
630
|
providers: [
|
|
@@ -609,36 +632,21 @@ class OAuthModule {
|
|
|
609
632
|
StorageService,
|
|
610
633
|
OAuthService,
|
|
611
634
|
OAuthInterceptorService,
|
|
612
|
-
{
|
|
613
|
-
provide: OAUTH_CONFIG,
|
|
614
|
-
useFactory(storage) {
|
|
615
|
-
return Object.assign(Object.assign({}, defaultConfig(storage)), config);
|
|
616
|
-
},
|
|
617
|
-
deps: [
|
|
618
|
-
STORAGE
|
|
619
|
-
]
|
|
620
|
-
}
|
|
635
|
+
provideOAuthConfigFactory((storage) => (Object.assign(Object.assign({}, defaultConfig(storage)), config)), [STORAGE]),
|
|
621
636
|
]
|
|
622
637
|
};
|
|
623
638
|
}
|
|
624
639
|
}
|
|
625
|
-
OAuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
626
|
-
OAuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "
|
|
640
|
+
OAuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: OAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
641
|
+
OAuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.5", ngImport: i0, type: OAuthModule, declarations: [OAuthLoginComponent], imports: [CommonModule,
|
|
627
642
|
FormsModule,
|
|
628
643
|
HttpClientModule,
|
|
629
644
|
RouterModule], exports: [OAuthLoginComponent] });
|
|
630
|
-
OAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
], imports: [[
|
|
636
|
-
CommonModule,
|
|
637
|
-
FormsModule,
|
|
638
|
-
HttpClientModule,
|
|
639
|
-
RouterModule,
|
|
640
|
-
]] });
|
|
641
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: OAuthModule, decorators: [{
|
|
645
|
+
OAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: OAuthModule, imports: [CommonModule,
|
|
646
|
+
FormsModule,
|
|
647
|
+
HttpClientModule,
|
|
648
|
+
RouterModule] });
|
|
649
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: OAuthModule, decorators: [{
|
|
642
650
|
type: NgModule,
|
|
643
651
|
args: [{
|
|
644
652
|
imports: [
|
|
@@ -648,13 +656,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
648
656
|
RouterModule,
|
|
649
657
|
],
|
|
650
658
|
declarations: [OAuthLoginComponent],
|
|
651
|
-
exports: [OAuthLoginComponent]
|
|
652
|
-
providers: [
|
|
653
|
-
LocationService,
|
|
654
|
-
StorageService,
|
|
655
|
-
OAuthService,
|
|
656
|
-
OAuthInterceptorService,
|
|
657
|
-
]
|
|
659
|
+
exports: [OAuthLoginComponent]
|
|
658
660
|
}]
|
|
659
661
|
}] });
|
|
660
662
|
|
|
@@ -666,5 +668,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
666
668
|
* Generated bundle index. Do not edit.
|
|
667
669
|
*/
|
|
668
670
|
|
|
669
|
-
export { LOCATION, OAUTH_CONFIG, OAUTH_TOKEN, OAuthInterceptor, OAuthLoginComponent, OAuthModule, OAuthService, OAuthStatus, OAuthType, SERVER_HOST, SERVER_PATH, STORAGE };
|
|
671
|
+
export { LOCATION, OAUTH_CONFIG, OAUTH_TOKEN, OAuthConfig, OAuthInterceptor, OAuthLoginComponent, OAuthModule, OAuthService, OAuthStatus, OAuthType, SERVER_HOST, SERVER_PATH, STORAGE, provideOAuthConfig, provideOAuthConfigFactory };
|
|
670
672
|
//# sourceMappingURL=ngx-oauth.mjs.map
|