@igo2/auth 1.14.2 → 1.14.3
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/igo2-auth.mjs +4 -4
- package/esm2020/lib/auth-form/auth-facebook.component.mjs +60 -60
- package/esm2020/lib/auth-form/auth-form.component.mjs +276 -276
- package/esm2020/lib/auth-form/auth-google.component.mjs +98 -98
- package/esm2020/lib/auth-form/auth-intern.component.mjs +118 -118
- package/esm2020/lib/auth-form/auth-microsoft.component.mjs +93 -93
- package/esm2020/lib/auth-form/auth-microsoftb2c.component.mjs +92 -92
- package/esm2020/lib/auth-form/index.mjs +4 -4
- package/esm2020/lib/auth-routing.module.mjs +23 -23
- package/esm2020/lib/auth.module.mjs +90 -90
- package/esm2020/lib/shared/admin.guard.mjs +32 -32
- package/esm2020/lib/shared/auth-microsoft.provider.mjs +83 -83
- package/esm2020/lib/shared/auth-msalBroadcastServiceb2c.service.mjs +37 -37
- package/esm2020/lib/shared/auth-msalServiceb2c.service..mjs +79 -79
- package/esm2020/lib/shared/auth.guard.mjs +31 -31
- package/esm2020/lib/shared/auth.interceptor.mjs +154 -154
- package/esm2020/lib/shared/auth.interface.mjs +1 -1
- package/esm2020/lib/shared/auth.service.mjs +159 -159
- package/esm2020/lib/shared/logged.guard.mjs +31 -31
- package/esm2020/lib/shared/profils.guard.mjs +36 -36
- package/esm2020/lib/shared/protected.directive.mjs +18 -18
- package/esm2020/lib/shared/storage.interface.mjs +1 -1
- package/esm2020/lib/shared/storage.service.mjs +90 -90
- package/esm2020/lib/shared/token.service.mjs +46 -46
- package/esm2020/public_api.mjs +18 -18
- package/fesm2015/igo2-auth.mjs +1579 -1579
- package/fesm2020/igo2-auth.mjs +1477 -1477
- package/index.d.ts +5 -5
- package/lib/auth-form/auth-facebook.component.d.ts +18 -18
- package/lib/auth-form/auth-form.component.d.ts +42 -42
- package/lib/auth-form/auth-google.component.d.ts +24 -24
- package/lib/auth-form/auth-intern.component.d.ts +21 -21
- package/lib/auth-form/auth-microsoft.component.d.ts +23 -23
- package/lib/auth-form/auth-microsoftb2c.component.d.ts +23 -23
- package/lib/auth-form/index.d.ts +4 -4
- package/lib/auth-routing.module.d.ts +7 -7
- package/lib/auth.module.d.ts +23 -23
- package/lib/shared/admin.guard.d.ts +13 -13
- package/lib/shared/auth-microsoft.provider.d.ts +30 -30
- package/lib/shared/auth-msalBroadcastServiceb2c.service.d.ts +15 -15
- package/lib/shared/auth-msalServiceb2c.service..d.ts +33 -33
- package/lib/shared/auth.guard.d.ts +13 -13
- package/lib/shared/auth.interceptor.d.ts +24 -24
- package/lib/shared/auth.interface.d.ts +99 -99
- package/lib/shared/auth.service.d.ts +44 -44
- package/lib/shared/logged.guard.d.ts +13 -13
- package/lib/shared/profils.guard.d.ts +13 -13
- package/lib/shared/protected.directive.d.ts +8 -8
- package/lib/shared/storage.interface.d.ts +4 -4
- package/lib/shared/storage.service.d.ts +18 -18
- package/lib/shared/token.service.d.ts +15 -15
- package/package.json +3 -3
- package/public_api.d.ts +15 -15
|
@@ -1,160 +1,160 @@
|
|
|
1
|
-
import { Injectable, Optional } from '@angular/core';
|
|
2
|
-
import { HttpHeaders } from '@angular/common/http';
|
|
3
|
-
import { BehaviorSubject, of } from 'rxjs';
|
|
4
|
-
import { tap, catchError } from 'rxjs/operators';
|
|
5
|
-
import { globalCacheBusterNotifier } from 'ts-cacheable';
|
|
6
|
-
import { Base64 } from '@igo2/utils';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common/http";
|
|
9
|
-
import * as i2 from "./token.service";
|
|
10
|
-
import * as i3 from "@igo2/core";
|
|
11
|
-
import * as i4 from "@angular/router";
|
|
12
|
-
export class AuthService {
|
|
13
|
-
constructor(http, tokenService, config, languageService, messageService, router) {
|
|
14
|
-
this.http = http;
|
|
15
|
-
this.tokenService = tokenService;
|
|
16
|
-
this.config = config;
|
|
17
|
-
this.languageService = languageService;
|
|
18
|
-
this.messageService = messageService;
|
|
19
|
-
this.router = router;
|
|
20
|
-
this.authenticate$ = new BehaviorSubject(undefined);
|
|
21
|
-
this.logged$ = new BehaviorSubject(undefined);
|
|
22
|
-
this.languageForce = false;
|
|
23
|
-
this.anonymous = false;
|
|
24
|
-
this.authenticate$.next(this.authenticated);
|
|
25
|
-
this.authenticate$.subscribe((authenticated) => {
|
|
26
|
-
this.logged$.next(authenticated);
|
|
27
|
-
globalCacheBusterNotifier.next();
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
get hasAuthService() {
|
|
31
|
-
return this.config.getConfig('auth.url') !== undefined;
|
|
32
|
-
}
|
|
33
|
-
login(username, password) {
|
|
34
|
-
const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });
|
|
35
|
-
const body = {
|
|
36
|
-
username,
|
|
37
|
-
password: this.encodePassword(password)
|
|
38
|
-
};
|
|
39
|
-
return this.loginCall(body, myHeader);
|
|
40
|
-
}
|
|
41
|
-
loginWithToken(token, type, infosUser) {
|
|
42
|
-
const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });
|
|
43
|
-
const body = {
|
|
44
|
-
token,
|
|
45
|
-
typeConnection: type,
|
|
46
|
-
infosUser
|
|
47
|
-
};
|
|
48
|
-
return this.loginCall(body, myHeader);
|
|
49
|
-
}
|
|
50
|
-
loginAnonymous() {
|
|
51
|
-
this.anonymous = true;
|
|
52
|
-
this.logged$.next(true);
|
|
53
|
-
return of(true);
|
|
54
|
-
}
|
|
55
|
-
refresh() {
|
|
56
|
-
const url = this.config.getConfig('auth.url');
|
|
57
|
-
return this.http.post(`${url}/refresh`, {}).pipe(tap((data) => {
|
|
58
|
-
this.tokenService.set(data.token);
|
|
59
|
-
}), catchError((err) => {
|
|
60
|
-
err.error.caught = true;
|
|
61
|
-
throw err;
|
|
62
|
-
}));
|
|
63
|
-
}
|
|
64
|
-
logout() {
|
|
65
|
-
this.anonymous = false;
|
|
66
|
-
this.tokenService.remove();
|
|
67
|
-
this.authenticate$.next(false);
|
|
68
|
-
return of(true);
|
|
69
|
-
}
|
|
70
|
-
isAuthenticated() {
|
|
71
|
-
return !this.tokenService.isExpired();
|
|
72
|
-
}
|
|
73
|
-
getToken() {
|
|
74
|
-
return this.tokenService.get();
|
|
75
|
-
}
|
|
76
|
-
decodeToken() {
|
|
77
|
-
if (this.isAuthenticated()) {
|
|
78
|
-
return this.tokenService.decode();
|
|
79
|
-
}
|
|
80
|
-
return false;
|
|
81
|
-
}
|
|
82
|
-
goToRedirectUrl() {
|
|
83
|
-
if (!this.router) {
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
const redirectUrl = this.redirectUrl || this.router.url;
|
|
87
|
-
const options = this.config.getConfig('auth') || {};
|
|
88
|
-
if (redirectUrl === options.loginRoute) {
|
|
89
|
-
const homeRoute = options.homeRoute || '/';
|
|
90
|
-
this.router.navigateByUrl(homeRoute);
|
|
91
|
-
}
|
|
92
|
-
else if (redirectUrl) {
|
|
93
|
-
this.router.navigateByUrl(redirectUrl);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
getUserInfo() {
|
|
97
|
-
const url = this.config.getConfig('auth.url') + '/info';
|
|
98
|
-
return this.http.get(url);
|
|
99
|
-
}
|
|
100
|
-
getProfils() {
|
|
101
|
-
const url = this.config.getConfig('auth.url');
|
|
102
|
-
return this.http.get(`${url}/profils`);
|
|
103
|
-
}
|
|
104
|
-
updateUser(user) {
|
|
105
|
-
const url = this.config.getConfig('auth.url');
|
|
106
|
-
return this.http.patch(url, user);
|
|
107
|
-
}
|
|
108
|
-
encodePassword(password) {
|
|
109
|
-
return Base64.encode(password);
|
|
110
|
-
}
|
|
111
|
-
// authenticated or anonymous
|
|
112
|
-
get logged() {
|
|
113
|
-
return this.authenticated || this.isAnonymous;
|
|
114
|
-
}
|
|
115
|
-
get isAnonymous() {
|
|
116
|
-
return this.anonymous;
|
|
117
|
-
}
|
|
118
|
-
get authenticated() {
|
|
119
|
-
return this.isAuthenticated();
|
|
120
|
-
}
|
|
121
|
-
get isAdmin() {
|
|
122
|
-
const token = this.decodeToken();
|
|
123
|
-
if (token && token.user && token.user.isAdmin) {
|
|
124
|
-
return true;
|
|
125
|
-
}
|
|
126
|
-
return false;
|
|
127
|
-
}
|
|
128
|
-
loginCall(body, headers) {
|
|
129
|
-
const url = this.config.getConfig('auth.url');
|
|
130
|
-
return this.http.post(`${url}/login`, body, { headers }).pipe(tap((data) => {
|
|
131
|
-
this.tokenService.set(data.token);
|
|
132
|
-
const tokenDecoded = this.decodeToken();
|
|
133
|
-
if (tokenDecoded && tokenDecoded.user) {
|
|
134
|
-
if (tokenDecoded.user.locale && !this.languageForce) {
|
|
135
|
-
this.languageService.setLanguage(tokenDecoded.user.locale);
|
|
136
|
-
}
|
|
137
|
-
if (tokenDecoded.user.isExpired) {
|
|
138
|
-
this.languageService.translate
|
|
139
|
-
.get('igo.auth.error.Password expired')
|
|
140
|
-
.subscribe((expiredAlert) => this.messageService.alert(expiredAlert));
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
this.authenticate$.next(true);
|
|
144
|
-
}), catchError((err) => {
|
|
145
|
-
err.error.caught = true;
|
|
146
|
-
throw err;
|
|
147
|
-
}));
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
AuthService.ɵfac = function AuthService_Factory(t) { return new (t || AuthService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.TokenService), i0.ɵɵinject(i3.ConfigService), i0.ɵɵinject(i3.LanguageService), i0.ɵɵinject(i3.MessageService), i0.ɵɵinject(i4.Router, 8)); };
|
|
151
|
-
AuthService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AuthService, factory: AuthService.ɵfac, providedIn: 'root' });
|
|
152
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthService, [{
|
|
153
|
-
type: Injectable,
|
|
154
|
-
args: [{
|
|
155
|
-
providedIn: 'root'
|
|
156
|
-
}]
|
|
157
|
-
}], function () { return [{ type: i1.HttpClient }, { type: i2.TokenService }, { type: i3.ConfigService }, { type: i3.LanguageService }, { type: i3.MessageService }, { type: i4.Router, decorators: [{
|
|
158
|
-
type: Optional
|
|
159
|
-
}] }]; }, null); })();
|
|
1
|
+
import { Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
3
|
+
import { BehaviorSubject, of } from 'rxjs';
|
|
4
|
+
import { tap, catchError } from 'rxjs/operators';
|
|
5
|
+
import { globalCacheBusterNotifier } from 'ts-cacheable';
|
|
6
|
+
import { Base64 } from '@igo2/utils';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common/http";
|
|
9
|
+
import * as i2 from "./token.service";
|
|
10
|
+
import * as i3 from "@igo2/core";
|
|
11
|
+
import * as i4 from "@angular/router";
|
|
12
|
+
export class AuthService {
|
|
13
|
+
constructor(http, tokenService, config, languageService, messageService, router) {
|
|
14
|
+
this.http = http;
|
|
15
|
+
this.tokenService = tokenService;
|
|
16
|
+
this.config = config;
|
|
17
|
+
this.languageService = languageService;
|
|
18
|
+
this.messageService = messageService;
|
|
19
|
+
this.router = router;
|
|
20
|
+
this.authenticate$ = new BehaviorSubject(undefined);
|
|
21
|
+
this.logged$ = new BehaviorSubject(undefined);
|
|
22
|
+
this.languageForce = false;
|
|
23
|
+
this.anonymous = false;
|
|
24
|
+
this.authenticate$.next(this.authenticated);
|
|
25
|
+
this.authenticate$.subscribe((authenticated) => {
|
|
26
|
+
this.logged$.next(authenticated);
|
|
27
|
+
globalCacheBusterNotifier.next();
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
get hasAuthService() {
|
|
31
|
+
return this.config.getConfig('auth.url') !== undefined;
|
|
32
|
+
}
|
|
33
|
+
login(username, password) {
|
|
34
|
+
const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });
|
|
35
|
+
const body = {
|
|
36
|
+
username,
|
|
37
|
+
password: this.encodePassword(password)
|
|
38
|
+
};
|
|
39
|
+
return this.loginCall(body, myHeader);
|
|
40
|
+
}
|
|
41
|
+
loginWithToken(token, type, infosUser) {
|
|
42
|
+
const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });
|
|
43
|
+
const body = {
|
|
44
|
+
token,
|
|
45
|
+
typeConnection: type,
|
|
46
|
+
infosUser
|
|
47
|
+
};
|
|
48
|
+
return this.loginCall(body, myHeader);
|
|
49
|
+
}
|
|
50
|
+
loginAnonymous() {
|
|
51
|
+
this.anonymous = true;
|
|
52
|
+
this.logged$.next(true);
|
|
53
|
+
return of(true);
|
|
54
|
+
}
|
|
55
|
+
refresh() {
|
|
56
|
+
const url = this.config.getConfig('auth.url');
|
|
57
|
+
return this.http.post(`${url}/refresh`, {}).pipe(tap((data) => {
|
|
58
|
+
this.tokenService.set(data.token);
|
|
59
|
+
}), catchError((err) => {
|
|
60
|
+
err.error.caught = true;
|
|
61
|
+
throw err;
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
logout() {
|
|
65
|
+
this.anonymous = false;
|
|
66
|
+
this.tokenService.remove();
|
|
67
|
+
this.authenticate$.next(false);
|
|
68
|
+
return of(true);
|
|
69
|
+
}
|
|
70
|
+
isAuthenticated() {
|
|
71
|
+
return !this.tokenService.isExpired();
|
|
72
|
+
}
|
|
73
|
+
getToken() {
|
|
74
|
+
return this.tokenService.get();
|
|
75
|
+
}
|
|
76
|
+
decodeToken() {
|
|
77
|
+
if (this.isAuthenticated()) {
|
|
78
|
+
return this.tokenService.decode();
|
|
79
|
+
}
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
goToRedirectUrl() {
|
|
83
|
+
if (!this.router) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const redirectUrl = this.redirectUrl || this.router.url;
|
|
87
|
+
const options = this.config.getConfig('auth') || {};
|
|
88
|
+
if (redirectUrl === options.loginRoute) {
|
|
89
|
+
const homeRoute = options.homeRoute || '/';
|
|
90
|
+
this.router.navigateByUrl(homeRoute);
|
|
91
|
+
}
|
|
92
|
+
else if (redirectUrl) {
|
|
93
|
+
this.router.navigateByUrl(redirectUrl);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
getUserInfo() {
|
|
97
|
+
const url = this.config.getConfig('auth.url') + '/info';
|
|
98
|
+
return this.http.get(url);
|
|
99
|
+
}
|
|
100
|
+
getProfils() {
|
|
101
|
+
const url = this.config.getConfig('auth.url');
|
|
102
|
+
return this.http.get(`${url}/profils`);
|
|
103
|
+
}
|
|
104
|
+
updateUser(user) {
|
|
105
|
+
const url = this.config.getConfig('auth.url');
|
|
106
|
+
return this.http.patch(url, user);
|
|
107
|
+
}
|
|
108
|
+
encodePassword(password) {
|
|
109
|
+
return Base64.encode(password);
|
|
110
|
+
}
|
|
111
|
+
// authenticated or anonymous
|
|
112
|
+
get logged() {
|
|
113
|
+
return this.authenticated || this.isAnonymous;
|
|
114
|
+
}
|
|
115
|
+
get isAnonymous() {
|
|
116
|
+
return this.anonymous;
|
|
117
|
+
}
|
|
118
|
+
get authenticated() {
|
|
119
|
+
return this.isAuthenticated();
|
|
120
|
+
}
|
|
121
|
+
get isAdmin() {
|
|
122
|
+
const token = this.decodeToken();
|
|
123
|
+
if (token && token.user && token.user.isAdmin) {
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
loginCall(body, headers) {
|
|
129
|
+
const url = this.config.getConfig('auth.url');
|
|
130
|
+
return this.http.post(`${url}/login`, body, { headers }).pipe(tap((data) => {
|
|
131
|
+
this.tokenService.set(data.token);
|
|
132
|
+
const tokenDecoded = this.decodeToken();
|
|
133
|
+
if (tokenDecoded && tokenDecoded.user) {
|
|
134
|
+
if (tokenDecoded.user.locale && !this.languageForce) {
|
|
135
|
+
this.languageService.setLanguage(tokenDecoded.user.locale);
|
|
136
|
+
}
|
|
137
|
+
if (tokenDecoded.user.isExpired) {
|
|
138
|
+
this.languageService.translate
|
|
139
|
+
.get('igo.auth.error.Password expired')
|
|
140
|
+
.subscribe((expiredAlert) => this.messageService.alert(expiredAlert));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
this.authenticate$.next(true);
|
|
144
|
+
}), catchError((err) => {
|
|
145
|
+
err.error.caught = true;
|
|
146
|
+
throw err;
|
|
147
|
+
}));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
AuthService.ɵfac = function AuthService_Factory(t) { return new (t || AuthService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.TokenService), i0.ɵɵinject(i3.ConfigService), i0.ɵɵinject(i3.LanguageService), i0.ɵɵinject(i3.MessageService), i0.ɵɵinject(i4.Router, 8)); };
|
|
151
|
+
AuthService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AuthService, factory: AuthService.ɵfac, providedIn: 'root' });
|
|
152
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthService, [{
|
|
153
|
+
type: Injectable,
|
|
154
|
+
args: [{
|
|
155
|
+
providedIn: 'root'
|
|
156
|
+
}]
|
|
157
|
+
}], function () { return [{ type: i1.HttpClient }, { type: i2.TokenService }, { type: i3.ConfigService }, { type: i3.LanguageService }, { type: i3.MessageService }, { type: i4.Router, decorators: [{
|
|
158
|
+
type: Optional
|
|
159
|
+
}] }]; }, null); })();
|
|
160
160
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL3NoYXJlZC9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRy9ELE9BQU8sRUFBYyxlQUFlLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQVFyQyxNQUFNLE9BQU8sV0FBVztJQVd0QixZQUNVLElBQWdCLEVBQ2hCLFlBQTBCLEVBQzFCLE1BQXFCLEVBQ3JCLGVBQWdDLEVBQ2hDLGNBQThCLEVBQ2xCLE1BQWM7UUFMMUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWhCN0Isa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxTQUFTLENBQUMsQ0FBQztRQUN4RCxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVUsU0FBUyxDQUFDLENBQUM7UUFFbEQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDckIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQWN4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENB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RUFBRTtvQkFDbkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDNUQ7Z0JBQ0QsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTO3lCQUMzQixHQUFHLENBQUMsaUNBQWlDLENBQUM7eUJBQ3RDLFNBQVMsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUN4QyxDQUFDO2lCQUNMO2FBQ0Y7WUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDeEIsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7c0VBMUtVLFdBQVc7aUVBQVgsV0FBVyxXQUFYLFdBQVcsbUJBRlYsTUFBTTt1RkFFUCxXQUFXO2NBSHZCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7c0JBa0JJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnbG9iYWxDYWNoZUJ1c3Rlck5vdGlmaWVyIH0gZnJvbSAndHMtY2FjaGVhYmxlJztcblxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSwgTGFuZ3VhZ2VTZXJ2aWNlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xuaW1wb3J0IHsgQmFzZTY0IH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgeyBVc2VyLCBJSW5mb3NVc2VyIH0gZnJvbSAnLi9hdXRoLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUb2tlblNlcnZpY2UgfSBmcm9tICcuL3Rva2VuLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG4gIHB1YmxpYyBhdXRoZW50aWNhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih1bmRlZmluZWQpO1xuICBwdWJsaWMgbG9nZ2VkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odW5kZWZpbmVkKTtcbiAgcHVibGljIHJlZGlyZWN0VXJsOiBzdHJpbmc7XG4gIHB1YmxpYyBsYW5ndWFnZUZvcmNlID0gZmFsc2U7XG4gIHByaXZhdGUgYW5vbnltb3VzID0gZmFsc2U7XG5cbiAgZ2V0IGhhc0F1dGhTZXJ2aWNlKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5nZXRDb25maWcoJ2F1dGgudXJsJykgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHRva2VuU2VydmljZTogVG9rZW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZSQubmV4dCh0aGlzLmF1dGhlbnRpY2F0ZWQpO1xuICAgIHRoaXMuYXV0aGVudGljYXRlJC5zdWJzY3JpYmUoKGF1dGhlbnRpY2F0ZWQpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VkJC5uZXh0KGF1dGhlbnRpY2F0ZWQpO1xuICAgICAgZ2xvYmFsQ2FjaGVCdXN0ZXJOb3RpZmllci5uZXh0KCk7XG4gICAgfSk7XG4gIH1cblxuICBsb2dpbih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgbXlIZWFkZXIgPSBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pO1xuXG4gICAgY29uc3QgYm9keSA9IHtcbiAgICAgIHVzZXJuYW1lLFxuICAgICAgcGFzc3dvcmQ6IHRoaXMuZW5jb2RlUGFzc3dvcmQocGFzc3dvcmQpXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmxvZ2luQ2FsbChib2R5LCBteUhlYWRlcik7XG4gIH1cblxuICBsb2dpbldpdGhUb2tlbih0b2tlbjogc3RyaW5nLCB0eXBlOiBzdHJpbmcsIGluZm9zVXNlcj86IElJbmZvc1VzZXIpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBteUhlYWRlciA9IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSk7XG5cbiAgICBjb25zdCBib2R5ID0ge1xuICAgICAgdG9rZW4sXG4gICAgICB0eXBlQ29ubmVjdGlvbjogdHlwZSxcbiAgICAgIGluZm9zVXNlclxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5sb2dpbkNhbGwoYm9keSwgbXlIZWFkZXIpO1xuICB9XG5cbiAgbG9naW5Bbm9ueW1vdXMoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgdGhpcy5hbm9ueW1vdXMgPSB0cnVlO1xuICAgIHRoaXMubG9nZ2VkJC5uZXh0KHRydWUpO1xuICAgIHJldHVybiBvZih0cnVlKTtcbiAgfVxuXG4gIHJlZnJlc2goKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5jb25maWcuZ2V0Q29uZmlnKCdhdXRoLnVybCcpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt1cmx9L3JlZnJlc2hgLCB7fSkucGlwZShcbiAgICAgIHRhcCgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLnNldChkYXRhLnRva2VuKTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgIGVyci5lcnJvci5jYXVnaHQgPSB0cnVlO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBsb2dvdXQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgdGhpcy5hbm9ueW1vdXMgPSBmYWxzZTtcbiAgICB0aGlzLnRva2VuU2VydmljZS5yZW1vdmUoKTtcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZSQubmV4dChmYWxzZSk7XG4gICAgcmV0dXJuIG9mKHRydWUpO1xuICB9XG5cbiAgaXNBdXRoZW50aWNhdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy50b2tlblNlcnZpY2UuaXNFeHBpcmVkKCk7XG4gIH1cblxuICBnZXRUb2tlbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRva2VuU2VydmljZS5nZXQoKTtcbiAgfVxuXG4gIGRlY29kZVRva2VuKCkge1xuICAgIGlmICh0aGlzLmlzQXV0aGVudGljYXRlZCgpKSB7XG4gICAgICByZXR1cm4gdGhpcy50b2tlblNlcnZpY2UuZGVjb2RlKCk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdvVG9SZWRpcmVjdFVybCgpIHtcbiAgICBpZiAoIXRoaXMucm91dGVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlZGlyZWN0VXJsID0gdGhpcy5yZWRpcmVjdFVybCB8fCB0aGlzLnJvdXRlci51cmw7XG5cbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jb25maWcuZ2V0Q29uZmlnKCdhdXRoJykgfHwge307XG4gICAgaWYgKHJlZGlyZWN0VXJsID09PSBvcHRpb25zLmxvZ2luUm91dGUpIHtcbiAgICAgIGNvbnN0IGhvbWVSb3V0ZSA9IG9wdGlvbnMuaG9tZVJvdXRlIHx8ICcvJztcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoaG9tZVJvdXRlKTtcbiAgICB9IGVsc2UgaWYgKHJlZGlyZWN0VXJsKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJlZGlyZWN0VXJsKTtcbiAgICB9XG4gIH1cblxuICBnZXRVc2VySW5mbygpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmNvbmZpZy5nZXRDb25maWcoJ2F1dGgudXJsJykgKyAnL2luZm8nO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFVzZXI+KHVybCk7XG4gIH1cblxuICBnZXRQcm9maWxzKCk6IE9ic2VydmFibGU8eyBwcm9maWxzOiBzdHJpbmdbXSB9PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5jb25maWcuZ2V0Q29uZmlnKCdhdXRoLnVybCcpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PHsgcHJvZmlsczogc3RyaW5nW10gfT4oYCR7dXJsfS9wcm9maWxzYCk7XG4gIH1cblxuICB1cGRhdGVVc2VyKHVzZXI6IFVzZXIpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmNvbmZpZy5nZXRDb25maWcoJ2F1dGgudXJsJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxVc2VyPih1cmwsIHVzZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmNvZGVQYXNzd29yZChwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIEJhc2U2NC5lbmNvZGUocGFzc3dvcmQpO1xuICB9XG5cbiAgLy8gYXV0aGVudGljYXRlZCBvciBhbm9ueW1vdXNcbiAgZ2V0IGxvZ2dlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoZW50aWNhdGVkIHx8IHRoaXMuaXNBbm9ueW1vdXM7XG4gIH1cblxuICBnZXQgaXNBbm9ueW1vdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYW5vbnltb3VzO1xuICB9XG5cbiAgZ2V0IGF1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNBdXRoZW50aWNhdGVkKCk7XG4gIH1cblxuICBnZXQgaXNBZG1pbigpOiBib29sZWFuIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZGVjb2RlVG9rZW4oKTtcbiAgICBpZiAodG9rZW4gJiYgdG9rZW4udXNlciAmJiB0b2tlbi51c2VyLmlzQWRtaW4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGxvZ2luQ2FsbChib2R5LCBoZWFkZXJzKSB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5jb25maWcuZ2V0Q29uZmlnKCdhdXRoLnVybCcpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt1cmx9L2xvZ2luYCwgYm9keSwgeyBoZWFkZXJzIH0pLnBpcGUoXG4gICAgICB0YXAoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRva2VuU2VydmljZS5zZXQoZGF0YS50b2tlbik7XG4gICAgICAgIGNvbnN0IHRva2VuRGVjb2RlZCA9IHRoaXMuZGVjb2RlVG9rZW4oKTtcbiAgICAgICAgaWYgKHRva2VuRGVjb2RlZCAmJiB0b2tlbkRlY29kZWQudXNlcikge1xuICAgICAgICAgIGlmICh0b2tlbkRlY29kZWQudXNlci5sb2NhbGUgJiYgIXRoaXMubGFuZ3VhZ2VGb3JjZSkge1xuICAgICAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2Uuc2V0TGFuZ3VhZ2UodG9rZW5EZWNvZGVkLnVzZXIubG9jYWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRva2VuRGVjb2RlZC51c2VyLmlzRXhwaXJlZCkge1xuICAgICAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlXG4gICAgICAgICAgICAgIC5nZXQoJ2lnby5hdXRoLmVycm9yLlBhc3N3b3JkIGV4cGlyZWQnKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChleHBpcmVkQWxlcnQpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hbGVydChleHBpcmVkQWxlcnQpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRlJC5uZXh0KHRydWUpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgZXJyLmVycm9yLmNhdWdodCA9IHRydWU7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "./auth.service";
|
|
4
|
-
import * as i2 from "@igo2/core";
|
|
5
|
-
import * as i3 from "@angular/router";
|
|
6
|
-
export class LoggedGuard {
|
|
7
|
-
constructor(authService, config, router) {
|
|
8
|
-
this.authService = authService;
|
|
9
|
-
this.config = config;
|
|
10
|
-
this.router = router;
|
|
11
|
-
}
|
|
12
|
-
canActivate(route, state) {
|
|
13
|
-
if (this.authService.logged) {
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
16
|
-
this.authService.redirectUrl = state.url;
|
|
17
|
-
const authConfig = this.config.getConfig('auth');
|
|
18
|
-
if (authConfig && authConfig.loginRoute) {
|
|
19
|
-
this.router.navigateByUrl(authConfig.loginRoute);
|
|
20
|
-
}
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
LoggedGuard.ɵfac = function LoggedGuard_Factory(t) { return new (t || LoggedGuard)(i0.ɵɵinject(i1.AuthService), i0.ɵɵinject(i2.ConfigService), i0.ɵɵinject(i3.Router)); };
|
|
25
|
-
LoggedGuard.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LoggedGuard, factory: LoggedGuard.ɵfac, providedIn: 'root' });
|
|
26
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LoggedGuard, [{
|
|
27
|
-
type: Injectable,
|
|
28
|
-
args: [{
|
|
29
|
-
providedIn: 'root'
|
|
30
|
-
}]
|
|
31
|
-
}], function () { return [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i3.Router }]; }, null); })();
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./auth.service";
|
|
4
|
+
import * as i2 from "@igo2/core";
|
|
5
|
+
import * as i3 from "@angular/router";
|
|
6
|
+
export class LoggedGuard {
|
|
7
|
+
constructor(authService, config, router) {
|
|
8
|
+
this.authService = authService;
|
|
9
|
+
this.config = config;
|
|
10
|
+
this.router = router;
|
|
11
|
+
}
|
|
12
|
+
canActivate(route, state) {
|
|
13
|
+
if (this.authService.logged) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
this.authService.redirectUrl = state.url;
|
|
17
|
+
const authConfig = this.config.getConfig('auth');
|
|
18
|
+
if (authConfig && authConfig.loginRoute) {
|
|
19
|
+
this.router.navigateByUrl(authConfig.loginRoute);
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
LoggedGuard.ɵfac = function LoggedGuard_Factory(t) { return new (t || LoggedGuard)(i0.ɵɵinject(i1.AuthService), i0.ɵɵinject(i2.ConfigService), i0.ɵɵinject(i3.Router)); };
|
|
25
|
+
LoggedGuard.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LoggedGuard, factory: LoggedGuard.ɵfac, providedIn: 'root' });
|
|
26
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LoggedGuard, [{
|
|
27
|
+
type: Injectable,
|
|
28
|
+
args: [{
|
|
29
|
+
providedIn: 'root'
|
|
30
|
+
}]
|
|
31
|
+
}], function () { return [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i3.Router }]; }, null); })();
|
|
32
32
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VkLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL3NoYXJlZC9sb2dnZWQuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFjM0MsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFDVSxXQUF3QixFQUN4QixNQUFxQixFQUNyQixNQUFjO1FBRmQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ3JCLENBQUM7SUFFSixXQUFXLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUNuRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBRXpDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxVQUFVLEVBQUU7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOztzRUFwQlUsV0FBVztpRUFBWCxXQUFXLFdBQVgsV0FBVyxtQkFGVixNQUFNO3VGQUVQLFdBQVc7Y0FIdkIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2FuQWN0aXZhdGUsXG4gIFJvdXRlcixcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTG9nZ2VkR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkge1xuICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmxvZ2dlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5hdXRoU2VydmljZS5yZWRpcmVjdFVybCA9IHN0YXRlLnVybDtcblxuICAgIGNvbnN0IGF1dGhDb25maWcgPSB0aGlzLmNvbmZpZy5nZXRDb25maWcoJ2F1dGgnKTtcbiAgICBpZiAoYXV0aENvbmZpZyAmJiBhdXRoQ29uZmlnLmxvZ2luUm91dGUpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoYXV0aENvbmZpZy5sb2dpblJvdXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { map } from 'rxjs/operators';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./auth.service";
|
|
5
|
-
import * as i2 from "@igo2/core";
|
|
6
|
-
import * as i3 from "@angular/router";
|
|
7
|
-
export class ProfilsGuard {
|
|
8
|
-
constructor(authService, config, router) {
|
|
9
|
-
this.authService = authService;
|
|
10
|
-
this.config = config;
|
|
11
|
-
this.router = router;
|
|
12
|
-
}
|
|
13
|
-
canActivate(_route, state) {
|
|
14
|
-
return this.authService.getProfils().pipe(map((profils) => {
|
|
15
|
-
const authConfig = this.config.getConfig('auth');
|
|
16
|
-
if (profils &&
|
|
17
|
-
profils.profils &&
|
|
18
|
-
profils.profils.some(v => authConfig.profilsGuard.indexOf(v) !== -1)) {
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
this.authService.redirectUrl = state.url;
|
|
22
|
-
if (authConfig && authConfig.loginRoute) {
|
|
23
|
-
this.router.navigateByUrl(authConfig.loginRoute);
|
|
24
|
-
}
|
|
25
|
-
return false;
|
|
26
|
-
}));
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
ProfilsGuard.ɵfac = function ProfilsGuard_Factory(t) { return new (t || ProfilsGuard)(i0.ɵɵinject(i1.AuthService), i0.ɵɵinject(i2.ConfigService), i0.ɵɵinject(i3.Router)); };
|
|
30
|
-
ProfilsGuard.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ProfilsGuard, factory: ProfilsGuard.ɵfac, providedIn: 'root' });
|
|
31
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProfilsGuard, [{
|
|
32
|
-
type: Injectable,
|
|
33
|
-
args: [{
|
|
34
|
-
providedIn: 'root'
|
|
35
|
-
}]
|
|
36
|
-
}], function () { return [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i3.Router }]; }, null); })();
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { map } from 'rxjs/operators';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./auth.service";
|
|
5
|
+
import * as i2 from "@igo2/core";
|
|
6
|
+
import * as i3 from "@angular/router";
|
|
7
|
+
export class ProfilsGuard {
|
|
8
|
+
constructor(authService, config, router) {
|
|
9
|
+
this.authService = authService;
|
|
10
|
+
this.config = config;
|
|
11
|
+
this.router = router;
|
|
12
|
+
}
|
|
13
|
+
canActivate(_route, state) {
|
|
14
|
+
return this.authService.getProfils().pipe(map((profils) => {
|
|
15
|
+
const authConfig = this.config.getConfig('auth');
|
|
16
|
+
if (profils &&
|
|
17
|
+
profils.profils &&
|
|
18
|
+
profils.profils.some(v => authConfig.profilsGuard.indexOf(v) !== -1)) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
this.authService.redirectUrl = state.url;
|
|
22
|
+
if (authConfig && authConfig.loginRoute) {
|
|
23
|
+
this.router.navigateByUrl(authConfig.loginRoute);
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
ProfilsGuard.ɵfac = function ProfilsGuard_Factory(t) { return new (t || ProfilsGuard)(i0.ɵɵinject(i1.AuthService), i0.ɵɵinject(i2.ConfigService), i0.ɵɵinject(i3.Router)); };
|
|
30
|
+
ProfilsGuard.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ProfilsGuard, factory: ProfilsGuard.ɵfac, providedIn: 'root' });
|
|
31
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProfilsGuard, [{
|
|
32
|
+
type: Injectable,
|
|
33
|
+
args: [{
|
|
34
|
+
providedIn: 'root'
|
|
35
|
+
}]
|
|
36
|
+
}], function () { return [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i3.Router }]; }, null); })();
|
|
37
37
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlscy5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9zaGFyZWQvcHJvZmlscy5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFRckMsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFDVSxXQUF3QixFQUN4QixNQUFxQixFQUNyQixNQUFjO1FBRmQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ3JCLENBQUM7SUFFSixXQUFXLENBQUMsTUFBOEIsRUFBRSxLQUEwQjtRQUNwRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUN2QyxHQUFHLENBQUMsQ0FBQyxPQUE4QixFQUFFLEVBQUU7WUFDckMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakQsSUFDRSxPQUFPO2dCQUNQLE9BQU8sQ0FBQyxPQUFPO2dCQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDcEU7Z0JBQ0EsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFFekMsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLFVBQVUsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2xEO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7d0VBNUJVLFlBQVk7a0VBQVosWUFBWSxXQUFaLFlBQVksbUJBRlgsTUFBTTt1RkFFUCxZQUFZO2NBSHhCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENhbkFjdGl2YXRlLFxuICBSb3V0ZXIsXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIFJvdXRlclN0YXRlU25hcHNob3Rcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFByb2ZpbHNHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWc6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgY2FuQWN0aXZhdGUoX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkge1xuICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmdldFByb2ZpbHMoKS5waXBlKFxuICAgICAgbWFwKChwcm9maWxzOiB7IHByb2ZpbHM6IHN0cmluZ1tdIH0pID0+IHtcbiAgICAgICAgY29uc3QgYXV0aENvbmZpZyA9IHRoaXMuY29uZmlnLmdldENvbmZpZygnYXV0aCcpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJvZmlscyAmJlxuICAgICAgICAgIHByb2ZpbHMucHJvZmlscyAmJlxuICAgICAgICAgIHByb2ZpbHMucHJvZmlscy5zb21lKHYgPT4gYXV0aENvbmZpZy5wcm9maWxzR3VhcmQuaW5kZXhPZih2KSAhPT0gLTEpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5yZWRpcmVjdFVybCA9IHN0YXRlLnVybDtcblxuICAgICAgICBpZiAoYXV0aENvbmZpZyAmJiBhdXRoQ29uZmlnLmxvZ2luUm91dGUpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGF1dGhDb25maWcubG9naW5Sb3V0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "./auth.service";
|
|
4
|
-
export class ProtectedDirective {
|
|
5
|
-
constructor(authentication, el) {
|
|
6
|
-
if (!authentication.isAuthenticated()) {
|
|
7
|
-
el.nativeElement.parentNode.removeChild(el.nativeElement);
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
ProtectedDirective.ɵfac = function ProtectedDirective_Factory(t) { return new (t || ProtectedDirective)(i0.ɵɵdirectiveInject(i1.AuthService), i0.ɵɵdirectiveInject(i0.ElementRef)); };
|
|
12
|
-
ProtectedDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: ProtectedDirective, selectors: [["", "igoProtected", ""]] });
|
|
13
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProtectedDirective, [{
|
|
14
|
-
type: Directive,
|
|
15
|
-
args: [{
|
|
16
|
-
selector: '[igoProtected]'
|
|
17
|
-
}]
|
|
18
|
-
}], function () { return [{ type: i1.AuthService }, { type: i0.ElementRef }]; }, null); })();
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./auth.service";
|
|
4
|
+
export class ProtectedDirective {
|
|
5
|
+
constructor(authentication, el) {
|
|
6
|
+
if (!authentication.isAuthenticated()) {
|
|
7
|
+
el.nativeElement.parentNode.removeChild(el.nativeElement);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
ProtectedDirective.ɵfac = function ProtectedDirective_Factory(t) { return new (t || ProtectedDirective)(i0.ɵɵdirectiveInject(i1.AuthService), i0.ɵɵdirectiveInject(i0.ElementRef)); };
|
|
12
|
+
ProtectedDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: ProtectedDirective, selectors: [["", "igoProtected", ""]] });
|
|
13
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProtectedDirective, [{
|
|
14
|
+
type: Directive,
|
|
15
|
+
args: [{
|
|
16
|
+
selector: '[igoProtected]'
|
|
17
|
+
}]
|
|
18
|
+
}], function () { return [{ type: i1.AuthService }, { type: i0.ElementRef }]; }, null); })();
|
|
19
19
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdGVjdGVkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9zaGFyZWQvcHJvdGVjdGVkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDOzs7QUFNdEQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixZQUFZLGNBQTJCLEVBQUUsRUFBYztRQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ3JDLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDM0Q7SUFDSCxDQUFDOztvRkFMVSxrQkFBa0I7cUVBQWxCLGtCQUFrQjt1RkFBbEIsa0JBQWtCO2NBSDlCLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2FBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2lnb1Byb3RlY3RlZF0nXG59KVxuZXhwb3J0IGNsYXNzIFByb3RlY3RlZERpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKGF1dGhlbnRpY2F0aW9uOiBBdXRoU2VydmljZSwgZWw6IEVsZW1lbnRSZWYpIHtcbiAgICBpZiAoIWF1dGhlbnRpY2F0aW9uLmlzQXV0aGVudGljYXRlZCgpKSB7XG4gICAgICBlbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWwubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvc2hhcmVkL3N0b3JhZ2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdG9yYWdlT3B0aW9ucyB9IGZyb20gJ0BpZ28yL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhTdG9yYWdlT3B0aW9ucyBleHRlbmRzIFN0b3JhZ2VPcHRpb25zIHtcbiAgdXJsOiBzdHJpbmc7XG59XG4iXX0=
|