@igo2/auth 1.15.3 → 1.15.5
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 +61 -61
- package/esm2020/lib/auth-form/auth-form.component.mjs +277 -277
- package/esm2020/lib/auth-form/auth-google.component.mjs +99 -99
- package/esm2020/lib/auth-form/auth-intern.component.mjs +119 -119
- package/esm2020/lib/auth-form/auth-microsoft.component.mjs +94 -94
- package/esm2020/lib/auth-form/auth-microsoftb2c.component.mjs +93 -93
- package/esm2020/lib/auth-form/index.mjs +5 -5
- package/esm2020/lib/auth-routing.module.mjs +24 -24
- package/esm2020/lib/auth.module.mjs +91 -91
- package/esm2020/lib/shared/admin.guard.mjs +33 -33
- package/esm2020/lib/shared/auth-microsoft.provider.mjs +84 -84
- package/esm2020/lib/shared/auth-msalBroadcastServiceb2c.service.mjs +38 -38
- package/esm2020/lib/shared/auth-msalServiceb2c.service..mjs +80 -80
- package/esm2020/lib/shared/auth.guard.mjs +32 -32
- package/esm2020/lib/shared/auth.interceptor.mjs +155 -155
- package/esm2020/lib/shared/auth.interface.mjs +2 -2
- package/esm2020/lib/shared/auth.service.mjs +158 -158
- package/esm2020/lib/shared/logged.guard.mjs +32 -32
- package/esm2020/lib/shared/profils.guard.mjs +37 -37
- package/esm2020/lib/shared/protected.directive.mjs +19 -19
- package/esm2020/lib/shared/storage.interface.mjs +2 -2
- package/esm2020/lib/shared/storage.service.mjs +91 -91
- package/esm2020/lib/shared/token.service.mjs +47 -47
- package/esm2020/public_api.mjs +19 -19
- package/fesm2015/igo2-auth.mjs +1577 -1577
- package/fesm2015/igo2-auth.mjs.map +1 -1
- package/fesm2020/igo2-auth.mjs +1475 -1475
- package/fesm2020/igo2-auth.mjs.map +1 -1
- 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,99 +1,99 @@
|
|
|
1
|
-
import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../shared/auth.service";
|
|
4
|
-
import * as i2 from "@igo2/core";
|
|
5
|
-
export class AuthGoogleComponent {
|
|
6
|
-
constructor(authService, config, languageService, appRef) {
|
|
7
|
-
this.authService = authService;
|
|
8
|
-
this.config = config;
|
|
9
|
-
this.languageService = languageService;
|
|
10
|
-
this.appRef = appRef;
|
|
11
|
-
this.login = new EventEmitter();
|
|
12
|
-
this.options = this.config.getConfig('auth.google') || {};
|
|
13
|
-
if (this.options.apiKey && this.options.clientId) {
|
|
14
|
-
this.loadSDKGoogle();
|
|
15
|
-
this.loadPlatform();
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
console.warn('Google authentification needs "apiKey" and "clientId" options');
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
handleSignInClick() {
|
|
22
|
-
window.gapi.auth2.getAuthInstance().signIn();
|
|
23
|
-
}
|
|
24
|
-
handleSignOutClick() {
|
|
25
|
-
window.gapi.auth2.getAuthInstance().signOut();
|
|
26
|
-
}
|
|
27
|
-
handleClientLoad() {
|
|
28
|
-
window.gapi.load('client:auth2', () => this.initClient());
|
|
29
|
-
}
|
|
30
|
-
initClient() {
|
|
31
|
-
window.gapi.client
|
|
32
|
-
.init({
|
|
33
|
-
apiKey: this.options.apiKey,
|
|
34
|
-
clientId: this.options.clientId,
|
|
35
|
-
discoveryDocs: [
|
|
36
|
-
'https://people.googleapis.com/$discovery/rest?version=v1'
|
|
37
|
-
],
|
|
38
|
-
scope: 'profile'
|
|
39
|
-
})
|
|
40
|
-
.then(() => {
|
|
41
|
-
this.handleSignOutClick();
|
|
42
|
-
this.updateTextButton();
|
|
43
|
-
window.gapi.auth2.getAuthInstance().isSignedIn.listen(rep => {
|
|
44
|
-
this.updateSigninStatus(rep);
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
updateSigninStatus(isSignedIn) {
|
|
49
|
-
this.updateTextButton();
|
|
50
|
-
if (isSignedIn) {
|
|
51
|
-
this.loginGoogle(window.gapi.client.getToken().access_token);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
updateTextButton() {
|
|
55
|
-
const btn = document.querySelector('span[id^="not_signed_"]');
|
|
56
|
-
if (btn && this.languageService.getLanguage() !== 'en') {
|
|
57
|
-
if (btn.innerHTML === 'Sign in with Google') {
|
|
58
|
-
btn.innerHTML = this.languageService.translate.instant('igo.auth.google.login');
|
|
59
|
-
}
|
|
60
|
-
else if (btn.innerHTML === 'Signed in with Google') {
|
|
61
|
-
btn.innerHTML = this.languageService.translate.instant('igo.auth.google.logged');
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
loginGoogle(token) {
|
|
66
|
-
this.authService.loginWithToken(token, 'google').subscribe(() => {
|
|
67
|
-
this.appRef.tick();
|
|
68
|
-
this.login.emit(true);
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
loadSDKGoogle() {
|
|
72
|
-
const fjs = document.getElementsByTagName('script')[0];
|
|
73
|
-
const js = document.createElement('script');
|
|
74
|
-
js.id = 'google-jssdk';
|
|
75
|
-
js.src = 'https://apis.google.com/js/api.js';
|
|
76
|
-
js.onload = () => {
|
|
77
|
-
this.handleClientLoad();
|
|
78
|
-
};
|
|
79
|
-
fjs.parentNode.insertBefore(js, fjs);
|
|
80
|
-
}
|
|
81
|
-
loadPlatform() {
|
|
82
|
-
const fjs = document.getElementsByTagName('script')[0];
|
|
83
|
-
const js = document.createElement('script');
|
|
84
|
-
js.id = 'google-platform';
|
|
85
|
-
js.src = 'https://apis.google.com/js/platform.js';
|
|
86
|
-
fjs.parentNode.insertBefore(js, fjs);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
AuthGoogleComponent.ɵfac = function AuthGoogleComponent_Factory(t) { return new (t || AuthGoogleComponent)(i0.ɵɵdirectiveInject(i1.AuthService), i0.ɵɵdirectiveInject(i2.ConfigService), i0.ɵɵdirectiveInject(i2.LanguageService), i0.ɵɵdirectiveInject(i0.ApplicationRef)); };
|
|
90
|
-
AuthGoogleComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AuthGoogleComponent, selectors: [["igo-auth-google"]], outputs: { login: "login" }, decls: 1, vars: 0, consts: [["data-height", "40", "data-width", "265", "data-longtitle", "true", 1, "g-signin2", "google-login-button"]], template: function AuthGoogleComponent_Template(rf, ctx) { if (rf & 1) {
|
|
91
|
-
i0.ɵɵelement(0, "div", 0);
|
|
92
|
-
} }, styles: ["[_nghost-%COMP%]{padding:10px 10px 10px 0;display:inline-block}.google-login-button[_ngcontent-%COMP%] .abcRioButton{color:#000000de}"], changeDetection: 0 });
|
|
93
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthGoogleComponent, [{
|
|
94
|
-
type: Component,
|
|
95
|
-
args: [{ selector: 'igo-auth-google', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"g-signin2 google-login-button\" data-height=\"40\" data-width=\"265\" data-longtitle=\"true\">\
|
|
96
|
-
}], function () { return [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i2.LanguageService }, { type: i0.ApplicationRef }]; }, { login: [{
|
|
97
|
-
type: Output
|
|
98
|
-
}] }); })();
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../shared/auth.service";
|
|
4
|
+
import * as i2 from "@igo2/core";
|
|
5
|
+
export class AuthGoogleComponent {
|
|
6
|
+
constructor(authService, config, languageService, appRef) {
|
|
7
|
+
this.authService = authService;
|
|
8
|
+
this.config = config;
|
|
9
|
+
this.languageService = languageService;
|
|
10
|
+
this.appRef = appRef;
|
|
11
|
+
this.login = new EventEmitter();
|
|
12
|
+
this.options = this.config.getConfig('auth.google') || {};
|
|
13
|
+
if (this.options.apiKey && this.options.clientId) {
|
|
14
|
+
this.loadSDKGoogle();
|
|
15
|
+
this.loadPlatform();
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
console.warn('Google authentification needs "apiKey" and "clientId" options');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
handleSignInClick() {
|
|
22
|
+
window.gapi.auth2.getAuthInstance().signIn();
|
|
23
|
+
}
|
|
24
|
+
handleSignOutClick() {
|
|
25
|
+
window.gapi.auth2.getAuthInstance().signOut();
|
|
26
|
+
}
|
|
27
|
+
handleClientLoad() {
|
|
28
|
+
window.gapi.load('client:auth2', () => this.initClient());
|
|
29
|
+
}
|
|
30
|
+
initClient() {
|
|
31
|
+
window.gapi.client
|
|
32
|
+
.init({
|
|
33
|
+
apiKey: this.options.apiKey,
|
|
34
|
+
clientId: this.options.clientId,
|
|
35
|
+
discoveryDocs: [
|
|
36
|
+
'https://people.googleapis.com/$discovery/rest?version=v1'
|
|
37
|
+
],
|
|
38
|
+
scope: 'profile'
|
|
39
|
+
})
|
|
40
|
+
.then(() => {
|
|
41
|
+
this.handleSignOutClick();
|
|
42
|
+
this.updateTextButton();
|
|
43
|
+
window.gapi.auth2.getAuthInstance().isSignedIn.listen(rep => {
|
|
44
|
+
this.updateSigninStatus(rep);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
updateSigninStatus(isSignedIn) {
|
|
49
|
+
this.updateTextButton();
|
|
50
|
+
if (isSignedIn) {
|
|
51
|
+
this.loginGoogle(window.gapi.client.getToken().access_token);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
updateTextButton() {
|
|
55
|
+
const btn = document.querySelector('span[id^="not_signed_"]');
|
|
56
|
+
if (btn && this.languageService.getLanguage() !== 'en') {
|
|
57
|
+
if (btn.innerHTML === 'Sign in with Google') {
|
|
58
|
+
btn.innerHTML = this.languageService.translate.instant('igo.auth.google.login');
|
|
59
|
+
}
|
|
60
|
+
else if (btn.innerHTML === 'Signed in with Google') {
|
|
61
|
+
btn.innerHTML = this.languageService.translate.instant('igo.auth.google.logged');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
loginGoogle(token) {
|
|
66
|
+
this.authService.loginWithToken(token, 'google').subscribe(() => {
|
|
67
|
+
this.appRef.tick();
|
|
68
|
+
this.login.emit(true);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
loadSDKGoogle() {
|
|
72
|
+
const fjs = document.getElementsByTagName('script')[0];
|
|
73
|
+
const js = document.createElement('script');
|
|
74
|
+
js.id = 'google-jssdk';
|
|
75
|
+
js.src = 'https://apis.google.com/js/api.js';
|
|
76
|
+
js.onload = () => {
|
|
77
|
+
this.handleClientLoad();
|
|
78
|
+
};
|
|
79
|
+
fjs.parentNode.insertBefore(js, fjs);
|
|
80
|
+
}
|
|
81
|
+
loadPlatform() {
|
|
82
|
+
const fjs = document.getElementsByTagName('script')[0];
|
|
83
|
+
const js = document.createElement('script');
|
|
84
|
+
js.id = 'google-platform';
|
|
85
|
+
js.src = 'https://apis.google.com/js/platform.js';
|
|
86
|
+
fjs.parentNode.insertBefore(js, fjs);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
AuthGoogleComponent.ɵfac = function AuthGoogleComponent_Factory(t) { return new (t || AuthGoogleComponent)(i0.ɵɵdirectiveInject(i1.AuthService), i0.ɵɵdirectiveInject(i2.ConfigService), i0.ɵɵdirectiveInject(i2.LanguageService), i0.ɵɵdirectiveInject(i0.ApplicationRef)); };
|
|
90
|
+
AuthGoogleComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AuthGoogleComponent, selectors: [["igo-auth-google"]], outputs: { login: "login" }, decls: 1, vars: 0, consts: [["data-height", "40", "data-width", "265", "data-longtitle", "true", 1, "g-signin2", "google-login-button"]], template: function AuthGoogleComponent_Template(rf, ctx) { if (rf & 1) {
|
|
91
|
+
i0.ɵɵelement(0, "div", 0);
|
|
92
|
+
} }, styles: ["[_nghost-%COMP%]{padding:10px 10px 10px 0;display:inline-block}.google-login-button[_ngcontent-%COMP%] .abcRioButton{color:#000000de}"], changeDetection: 0 });
|
|
93
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthGoogleComponent, [{
|
|
94
|
+
type: Component,
|
|
95
|
+
args: [{ selector: 'igo-auth-google', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"g-signin2 google-login-button\" data-height=\"40\" data-width=\"265\" data-longtitle=\"true\">\n", styles: [":host{padding:10px 10px 10px 0;display:inline-block}.google-login-button ::ng-deep .abcRioButton{color:#000000de}\n"] }]
|
|
96
|
+
}], function () { return [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i2.LanguageService }, { type: i0.ApplicationRef }]; }, { login: [{
|
|
97
|
+
type: Output
|
|
98
|
+
}] }); })();
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1nb29nbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL2F1dGgtZm9ybS9hdXRoLWdvb2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC1mb3JtL2F1dGgtZ29vZ2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBRXZCLE1BQU0sRUFDTixZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7Ozs7QUFZdkIsTUFBTSxPQUFPLG1CQUFtQjtJQUs5QixZQUNVLFdBQXdCLEVBQ3hCLE1BQXFCLEVBQ3JCLGVBQWdDLEVBQ2hDLE1BQXNCO1FBSHRCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBTnRCLFVBQUssR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQVFuRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUxRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ2hELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7YUFBTTtZQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsK0RBQStELENBQUMsQ0FBQztTQUMvRTtJQUNILENBQUM7SUFFTSxpQkFBaUI7UUFDckIsTUFBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxFQUFF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QUFDLENBQUM7UUFDRixHQUFHLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVPLFlBQVk7UUFDbEIsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQztRQUMxQixFQUFFLENBQUMsR0FBRyxHQUFHLHdDQUF3QyxDQUFDO1FBQ2xELEdBQUcsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN2QyxDQUFDOztzRkE5RlUsbUJBQW1CO3NFQUFuQixtQkFBbUI7UUNsQmhDLHlCQUFtRzs7dUZEa0J0RixtQkFBbUI7Y0FOL0IsU0FBUzsyQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTTtxSkFLckMsS0FBSztrQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQXBwbGljYXRpb25SZWYsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlLCBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcbmltcG9ydCB7IEF1dGhHb29nbGVPcHRpb25zIH0gZnJvbSAnLi4vc2hhcmVkL2F1dGguaW50ZXJmYWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2F1dGguc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1hdXRoLWdvb2dsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRoLWdvb2dsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F1dGgtZ29vZ2xlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhHb29nbGVDb21wb25lbnQge1xuICBwcml2YXRlIG9wdGlvbnM6IEF1dGhHb29nbGVPcHRpb25zO1xuXG4gIEBPdXRwdXQoKSBsb2dpbjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmXG4gICkge1xuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuY29uZmlnLmdldENvbmZpZygnYXV0aC5nb29nbGUnKSB8fCB7fTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMuYXBpS2V5ICYmIHRoaXMub3B0aW9ucy5jbGllbnRJZCkge1xuICAgICAgdGhpcy5sb2FkU0RLR29vZ2xlKCk7XG4gICAgICB0aGlzLmxvYWRQbGF0Zm9ybSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0dvb2dsZSBhdXRoZW50aWZpY2F0aW9uIG5lZWRzIFwiYXBpS2V5XCIgYW5kIFwiY2xpZW50SWRcIiBvcHRpb25zJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZVNpZ25JbkNsaWNrKCkge1xuICAgICh3aW5kb3cgYXMgYW55KS5nYXBpLmF1dGgyLmdldEF1dGhJbnN0YW5jZSgpLnNpZ25JbigpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZVNpZ25PdXRDbGljaygpIHtcbiAgICAod2luZG93IGFzIGFueSkuZ2FwaS5hdXRoMi5nZXRBdXRoSW5zdGFuY2UoKS5zaWduT3V0KCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNsaWVudExvYWQoKSB7XG4gICAgKHdpbmRvdyBhcyBhbnkpLmdhcGkubG9hZCgnY2xpZW50OmF1dGgyJywgKCkgPT4gdGhpcy5pbml0Q2xpZW50KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q2xpZW50KCkge1xuICAgICh3aW5kb3cgYXMgYW55KS5nYXBpLmNsaWVudFxuICAgICAgLmluaXQoe1xuICAgICAgICBhcGlLZXk6IHRoaXMub3B0aW9ucy5hcGlLZXksXG4gICAgICAgIGNsaWVudElkOiB0aGlzLm9wdGlvbnMuY2xpZW50SWQsXG4gICAgICAgIGRpc2NvdmVyeURvY3M6IFtcbiAgICAgICAgICAnaHR0cHM6Ly9wZW9wbGUuZ29vZ2xlYXBpcy5jb20vJGRpc2NvdmVyeS9yZXN0P3ZlcnNpb249djEnXG4gICAgICAgIF0sXG4gICAgICAgIHNjb3BlOiAncHJvZmlsZSdcbiAgICAgIH0pXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlU2lnbk91dENsaWNrKCk7XG4gICAgICAgIHRoaXMudXBkYXRlVGV4dEJ1dHRvbigpO1xuICAgICAgICAod2luZG93IGFzIGFueSkuZ2FwaS5hdXRoMi5nZXRBdXRoSW5zdGFuY2UoKS5pc1NpZ25lZEluLmxpc3RlbihyZXAgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlU2lnbmluU3RhdHVzKHJlcCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNpZ25pblN0YXR1cyhpc1NpZ25lZEluKSB7XG4gICAgdGhpcy51cGRhdGVUZXh0QnV0dG9uKCk7XG4gICAgaWYgKGlzU2lnbmVkSW4pIHtcbiAgICAgIHRoaXMubG9naW5Hb29nbGUoKHdpbmRvdyBhcyBhbnkpLmdhcGkuY2xpZW50LmdldFRva2VuKCkuYWNjZXNzX3Rva2VuKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRleHRCdXR0b24oKSB7XG4gICAgY29uc3QgYnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc3BhbltpZF49XCJub3Rfc2lnbmVkX1wiXScpO1xuICAgIGlmIChidG4gJiYgdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0TGFuZ3VhZ2UoKSAhPT0gJ2VuJykge1xuICAgICAgaWYgKGJ0bi5pbm5lckhUTUwgPT09ICdTaWduIGluIHdpdGggR29vZ2xlJykge1xuICAgICAgICBidG4uaW5uZXJIVE1MID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5hdXRoLmdvb2dsZS5sb2dpbicpO1xuICAgICAgfSBlbHNlIGlmIChidG4uaW5uZXJIVE1MID09PSAnU2lnbmVkIGluIHdpdGggR29vZ2xlJykge1xuICAgICAgICBidG4uaW5uZXJIVE1MID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5hdXRoLmdvb2dsZS5sb2dnZWQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvZ2luR29vZ2xlKHRva2VuKSB7XG4gICAgdGhpcy5hdXRoU2VydmljZS5sb2dpbldpdGhUb2tlbih0b2tlbiwgJ2dvb2dsZScpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmFwcFJlZi50aWNrKCk7XG4gICAgICB0aGlzLmxvZ2luLmVtaXQodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRTREtHb29nbGUoKSB7XG4gICAgY29uc3QgZmpzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdO1xuICAgIGNvbnN0IGpzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAganMuaWQgPSAnZ29vZ2xlLWpzc2RrJztcbiAgICBqcy5zcmMgPSAnaHR0cHM6Ly9hcGlzLmdvb2dsZS5jb20vanMvYXBpLmpzJztcbiAgICBqcy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZUNsaWVudExvYWQoKTtcbiAgICB9O1xuICAgIGZqcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShqcywgZmpzKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFBsYXRmb3JtKCkge1xuICAgIGNvbnN0IGZqcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtcbiAgICBjb25zdCBqcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgIGpzLmlkID0gJ2dvb2dsZS1wbGF0Zm9ybSc7XG4gICAganMuc3JjID0gJ2h0dHBzOi8vYXBpcy5nb29nbGUuY29tL2pzL3BsYXRmb3JtLmpzJztcbiAgICBmanMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoanMsIGZqcyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJnLXNpZ25pbjIgZ29vZ2xlLWxvZ2luLWJ1dHRvblwiIGRhdGEtaGVpZ2h0PVwiNDBcIiBkYXRhLXdpZHRoPVwiMjY1XCIgZGF0YS1sb25ndGl0bGU9XCJ0cnVlXCI+XG4iXX0=
|
|
@@ -1,119 +1,119 @@
|
|
|
1
|
-
import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import { Validators } from '@angular/forms';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../shared/auth.service";
|
|
5
|
-
import * as i2 from "@igo2/core";
|
|
6
|
-
import * as i3 from "@angular/forms";
|
|
7
|
-
import * as i4 from "@angular/common";
|
|
8
|
-
import * as i5 from "@angular/material/form-field";
|
|
9
|
-
import * as i6 from "@angular/material/input";
|
|
10
|
-
import * as i7 from "@angular/material/button";
|
|
11
|
-
import * as i8 from "@ngx-translate/core";
|
|
12
|
-
function AuthInternComponent_button_12_Template(rf, ctx) { if (rf & 1) {
|
|
13
|
-
const _r3 = i0.ɵɵgetCurrentView();
|
|
14
|
-
i0.ɵɵelementStart(0, "button", 7);
|
|
15
|
-
i0.ɵɵlistener("click", function AuthInternComponent_button_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.loginAnonymous()); });
|
|
16
|
-
i0.ɵɵtext(1);
|
|
17
|
-
i0.ɵɵpipe(2, "translate");
|
|
18
|
-
i0.ɵɵelementEnd();
|
|
19
|
-
} if (rf & 2) {
|
|
20
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
21
|
-
i0.ɵɵproperty("disabled", ctx_r0.loading);
|
|
22
|
-
i0.ɵɵadvance(1);
|
|
23
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.auth.accessAnonymous"), " ");
|
|
24
|
-
} }
|
|
25
|
-
function AuthInternComponent_div_13_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
-
i0.ɵɵelementStart(0, "div");
|
|
27
|
-
i0.ɵɵelement(1, "br");
|
|
28
|
-
i0.ɵɵelementStart(2, "font", 8);
|
|
29
|
-
i0.ɵɵtext(3);
|
|
30
|
-
i0.ɵɵelementEnd()();
|
|
31
|
-
} if (rf & 2) {
|
|
32
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
33
|
-
i0.ɵɵadvance(3);
|
|
34
|
-
i0.ɵɵtextInterpolate(ctx_r1.error);
|
|
35
|
-
} }
|
|
36
|
-
export class AuthInternComponent {
|
|
37
|
-
constructor(auth, languageService, fb) {
|
|
38
|
-
this.auth = auth;
|
|
39
|
-
this.languageService = languageService;
|
|
40
|
-
this._allowAnonymous = true;
|
|
41
|
-
this.error = '';
|
|
42
|
-
this.loading = false;
|
|
43
|
-
this.login = new EventEmitter();
|
|
44
|
-
this.form = fb.group({
|
|
45
|
-
username: ['', Validators.required],
|
|
46
|
-
password: ['', Validators.required]
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
get allowAnonymous() {
|
|
50
|
-
return this._allowAnonymous;
|
|
51
|
-
}
|
|
52
|
-
set allowAnonymous(value) {
|
|
53
|
-
this._allowAnonymous = value;
|
|
54
|
-
}
|
|
55
|
-
loginUser(values) {
|
|
56
|
-
this.loading = true;
|
|
57
|
-
this.auth.login(values.username, values.password).subscribe(() => {
|
|
58
|
-
this.login.emit(true);
|
|
59
|
-
this.loading = false;
|
|
60
|
-
}, (error) => {
|
|
61
|
-
try {
|
|
62
|
-
this.languageService.translate
|
|
63
|
-
.get('igo.auth.error.' + error.error.message)
|
|
64
|
-
.subscribe(errorMsg => (this.error = errorMsg));
|
|
65
|
-
}
|
|
66
|
-
catch (e) {
|
|
67
|
-
this.error = error.error.message;
|
|
68
|
-
}
|
|
69
|
-
this.loading = false;
|
|
70
|
-
});
|
|
71
|
-
return false;
|
|
72
|
-
}
|
|
73
|
-
loginAnonymous() {
|
|
74
|
-
this.auth.loginAnonymous().subscribe(() => {
|
|
75
|
-
this.login.emit(true);
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
AuthInternComponent.ɵfac = function AuthInternComponent_Factory(t) { return new (t || AuthInternComponent)(i0.ɵɵdirectiveInject(i1.AuthService), i0.ɵɵdirectiveInject(i2.LanguageService), i0.ɵɵdirectiveInject(i3.UntypedFormBuilder)); };
|
|
80
|
-
AuthInternComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AuthInternComponent, selectors: [["igo-auth-intern"]], inputs: { allowAnonymous: "allowAnonymous" }, outputs: { login: "login" }, decls: 14, vars: 12, consts: [["role", "form", 3, "formGroup", "ngSubmit"], [1, "full-width"], ["matInput", "", "required", "", "formControlName", "username", 3, "placeholder"], ["matInput", "", "required", "", "type", "password", "formControlName", "password", 3, "placeholder"], ["mat-raised-button", "", "type", "submit"], ["mat-raised-button", "", "class", "anonymous", "type", "button", 3, "disabled", "click", 4, "ngIf"], [4, "ngIf"], ["mat-raised-button", "", "type", "button", 1, "anonymous", 3, "disabled", "click"], ["size", "3", "color", "red"]], template: function AuthInternComponent_Template(rf, ctx) { if (rf & 1) {
|
|
81
|
-
i0.ɵɵelementStart(0, "form", 0);
|
|
82
|
-
i0.ɵɵlistener("ngSubmit", function AuthInternComponent_Template_form_ngSubmit_0_listener() { return ctx.loginUser(ctx.form.value); });
|
|
83
|
-
i0.ɵɵelementStart(1, "div")(2, "mat-form-field", 1);
|
|
84
|
-
i0.ɵɵelement(3, "input", 2);
|
|
85
|
-
i0.ɵɵpipe(4, "translate");
|
|
86
|
-
i0.ɵɵelementEnd()();
|
|
87
|
-
i0.ɵɵelementStart(5, "div")(6, "mat-form-field", 1);
|
|
88
|
-
i0.ɵɵelement(7, "input", 3);
|
|
89
|
-
i0.ɵɵpipe(8, "translate");
|
|
90
|
-
i0.ɵɵelementEnd()();
|
|
91
|
-
i0.ɵɵelementStart(9, "button", 4);
|
|
92
|
-
i0.ɵɵtext(10);
|
|
93
|
-
i0.ɵɵpipe(11, "translate");
|
|
94
|
-
i0.ɵɵelementEnd();
|
|
95
|
-
i0.ɵɵtemplate(12, AuthInternComponent_button_12_Template, 3, 4, "button", 5);
|
|
96
|
-
i0.ɵɵtemplate(13, AuthInternComponent_div_13_Template, 4, 1, "div", 6);
|
|
97
|
-
i0.ɵɵelementEnd();
|
|
98
|
-
} if (rf & 2) {
|
|
99
|
-
i0.ɵɵproperty("formGroup", ctx.form);
|
|
100
|
-
i0.ɵɵadvance(3);
|
|
101
|
-
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(4, 6, "igo.auth.user"));
|
|
102
|
-
i0.ɵɵadvance(4);
|
|
103
|
-
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(8, 8, "igo.auth.password"));
|
|
104
|
-
i0.ɵɵadvance(3);
|
|
105
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 10, "igo.auth.login"));
|
|
106
|
-
i0.ɵɵadvance(2);
|
|
107
|
-
i0.ɵɵproperty("ngIf", ctx.allowAnonymous);
|
|
108
|
-
i0.ɵɵadvance(1);
|
|
109
|
-
i0.ɵɵproperty("ngIf", ctx.error);
|
|
110
|
-
} }, dependencies: [i4.NgIf, i3.ɵNgNoValidate, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.RequiredValidator, i3.FormGroupDirective, i3.FormControlName, i5.MatFormField, i6.MatInput, i7.MatButton, i8.TranslatePipe], styles: [".full-width[_ngcontent-%COMP%]{width:100%}.anonymous[_ngcontent-%COMP%]{margin-left:10px}"] });
|
|
111
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthInternComponent, [{
|
|
112
|
-
type: Component,
|
|
113
|
-
args: [{ selector: 'igo-auth-intern', changeDetection: ChangeDetectionStrategy.Default, template: "<form [formGroup]=\"form\" role=\"form\" (ngSubmit)=\"loginUser(form.value)\">\
|
|
114
|
-
}], function () { return [{ type: i1.AuthService }, { type: i2.LanguageService }, { type: i3.UntypedFormBuilder }]; }, { allowAnonymous: [{
|
|
115
|
-
type: Input
|
|
116
|
-
}], login: [{
|
|
117
|
-
type: Output
|
|
118
|
-
}] }); })();
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../shared/auth.service";
|
|
5
|
+
import * as i2 from "@igo2/core";
|
|
6
|
+
import * as i3 from "@angular/forms";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
import * as i5 from "@angular/material/form-field";
|
|
9
|
+
import * as i6 from "@angular/material/input";
|
|
10
|
+
import * as i7 from "@angular/material/button";
|
|
11
|
+
import * as i8 from "@ngx-translate/core";
|
|
12
|
+
function AuthInternComponent_button_12_Template(rf, ctx) { if (rf & 1) {
|
|
13
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
14
|
+
i0.ɵɵelementStart(0, "button", 7);
|
|
15
|
+
i0.ɵɵlistener("click", function AuthInternComponent_button_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.loginAnonymous()); });
|
|
16
|
+
i0.ɵɵtext(1);
|
|
17
|
+
i0.ɵɵpipe(2, "translate");
|
|
18
|
+
i0.ɵɵelementEnd();
|
|
19
|
+
} if (rf & 2) {
|
|
20
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
21
|
+
i0.ɵɵproperty("disabled", ctx_r0.loading);
|
|
22
|
+
i0.ɵɵadvance(1);
|
|
23
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.auth.accessAnonymous"), " ");
|
|
24
|
+
} }
|
|
25
|
+
function AuthInternComponent_div_13_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
+
i0.ɵɵelementStart(0, "div");
|
|
27
|
+
i0.ɵɵelement(1, "br");
|
|
28
|
+
i0.ɵɵelementStart(2, "font", 8);
|
|
29
|
+
i0.ɵɵtext(3);
|
|
30
|
+
i0.ɵɵelementEnd()();
|
|
31
|
+
} if (rf & 2) {
|
|
32
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
33
|
+
i0.ɵɵadvance(3);
|
|
34
|
+
i0.ɵɵtextInterpolate(ctx_r1.error);
|
|
35
|
+
} }
|
|
36
|
+
export class AuthInternComponent {
|
|
37
|
+
constructor(auth, languageService, fb) {
|
|
38
|
+
this.auth = auth;
|
|
39
|
+
this.languageService = languageService;
|
|
40
|
+
this._allowAnonymous = true;
|
|
41
|
+
this.error = '';
|
|
42
|
+
this.loading = false;
|
|
43
|
+
this.login = new EventEmitter();
|
|
44
|
+
this.form = fb.group({
|
|
45
|
+
username: ['', Validators.required],
|
|
46
|
+
password: ['', Validators.required]
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
get allowAnonymous() {
|
|
50
|
+
return this._allowAnonymous;
|
|
51
|
+
}
|
|
52
|
+
set allowAnonymous(value) {
|
|
53
|
+
this._allowAnonymous = value;
|
|
54
|
+
}
|
|
55
|
+
loginUser(values) {
|
|
56
|
+
this.loading = true;
|
|
57
|
+
this.auth.login(values.username, values.password).subscribe(() => {
|
|
58
|
+
this.login.emit(true);
|
|
59
|
+
this.loading = false;
|
|
60
|
+
}, (error) => {
|
|
61
|
+
try {
|
|
62
|
+
this.languageService.translate
|
|
63
|
+
.get('igo.auth.error.' + error.error.message)
|
|
64
|
+
.subscribe(errorMsg => (this.error = errorMsg));
|
|
65
|
+
}
|
|
66
|
+
catch (e) {
|
|
67
|
+
this.error = error.error.message;
|
|
68
|
+
}
|
|
69
|
+
this.loading = false;
|
|
70
|
+
});
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
loginAnonymous() {
|
|
74
|
+
this.auth.loginAnonymous().subscribe(() => {
|
|
75
|
+
this.login.emit(true);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
AuthInternComponent.ɵfac = function AuthInternComponent_Factory(t) { return new (t || AuthInternComponent)(i0.ɵɵdirectiveInject(i1.AuthService), i0.ɵɵdirectiveInject(i2.LanguageService), i0.ɵɵdirectiveInject(i3.UntypedFormBuilder)); };
|
|
80
|
+
AuthInternComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AuthInternComponent, selectors: [["igo-auth-intern"]], inputs: { allowAnonymous: "allowAnonymous" }, outputs: { login: "login" }, decls: 14, vars: 12, consts: [["role", "form", 3, "formGroup", "ngSubmit"], [1, "full-width"], ["matInput", "", "required", "", "formControlName", "username", 3, "placeholder"], ["matInput", "", "required", "", "type", "password", "formControlName", "password", 3, "placeholder"], ["mat-raised-button", "", "type", "submit"], ["mat-raised-button", "", "class", "anonymous", "type", "button", 3, "disabled", "click", 4, "ngIf"], [4, "ngIf"], ["mat-raised-button", "", "type", "button", 1, "anonymous", 3, "disabled", "click"], ["size", "3", "color", "red"]], template: function AuthInternComponent_Template(rf, ctx) { if (rf & 1) {
|
|
81
|
+
i0.ɵɵelementStart(0, "form", 0);
|
|
82
|
+
i0.ɵɵlistener("ngSubmit", function AuthInternComponent_Template_form_ngSubmit_0_listener() { return ctx.loginUser(ctx.form.value); });
|
|
83
|
+
i0.ɵɵelementStart(1, "div")(2, "mat-form-field", 1);
|
|
84
|
+
i0.ɵɵelement(3, "input", 2);
|
|
85
|
+
i0.ɵɵpipe(4, "translate");
|
|
86
|
+
i0.ɵɵelementEnd()();
|
|
87
|
+
i0.ɵɵelementStart(5, "div")(6, "mat-form-field", 1);
|
|
88
|
+
i0.ɵɵelement(7, "input", 3);
|
|
89
|
+
i0.ɵɵpipe(8, "translate");
|
|
90
|
+
i0.ɵɵelementEnd()();
|
|
91
|
+
i0.ɵɵelementStart(9, "button", 4);
|
|
92
|
+
i0.ɵɵtext(10);
|
|
93
|
+
i0.ɵɵpipe(11, "translate");
|
|
94
|
+
i0.ɵɵelementEnd();
|
|
95
|
+
i0.ɵɵtemplate(12, AuthInternComponent_button_12_Template, 3, 4, "button", 5);
|
|
96
|
+
i0.ɵɵtemplate(13, AuthInternComponent_div_13_Template, 4, 1, "div", 6);
|
|
97
|
+
i0.ɵɵelementEnd();
|
|
98
|
+
} if (rf & 2) {
|
|
99
|
+
i0.ɵɵproperty("formGroup", ctx.form);
|
|
100
|
+
i0.ɵɵadvance(3);
|
|
101
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(4, 6, "igo.auth.user"));
|
|
102
|
+
i0.ɵɵadvance(4);
|
|
103
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(8, 8, "igo.auth.password"));
|
|
104
|
+
i0.ɵɵadvance(3);
|
|
105
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 10, "igo.auth.login"));
|
|
106
|
+
i0.ɵɵadvance(2);
|
|
107
|
+
i0.ɵɵproperty("ngIf", ctx.allowAnonymous);
|
|
108
|
+
i0.ɵɵadvance(1);
|
|
109
|
+
i0.ɵɵproperty("ngIf", ctx.error);
|
|
110
|
+
} }, dependencies: [i4.NgIf, i3.ɵNgNoValidate, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.RequiredValidator, i3.FormGroupDirective, i3.FormControlName, i5.MatFormField, i6.MatInput, i7.MatButton, i8.TranslatePipe], styles: [".full-width[_ngcontent-%COMP%]{width:100%}.anonymous[_ngcontent-%COMP%]{margin-left:10px}"] });
|
|
111
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthInternComponent, [{
|
|
112
|
+
type: Component,
|
|
113
|
+
args: [{ selector: 'igo-auth-intern', changeDetection: ChangeDetectionStrategy.Default, template: "<form [formGroup]=\"form\" role=\"form\" (ngSubmit)=\"loginUser(form.value)\">\n <div>\n <mat-form-field class=\"full-width\">\n <input matInput required placeholder=\"{{'igo.auth.user' | translate}}\" formControlName=\"username\">\n </mat-form-field>\n </div>\n\n <div>\n <mat-form-field class=\"full-width\">\n <input matInput required type=\"password\" placeholder=\"{{'igo.auth.password' | translate}}\" formControlName=\"password\">\n </mat-form-field>\n </div>\n\n <button mat-raised-button type=\"submit\">{{'igo.auth.login' | translate}}</button>\n <button *ngIf=\"allowAnonymous\" mat-raised-button class=\"anonymous\" type=\"button\" [disabled]=\"loading\" (click)=\"loginAnonymous()\">\n {{'igo.auth.accessAnonymous' | translate }}\n </button>\n <div *ngIf=\"error\">\n <br/>\n <font size=\"3\" color=\"red\">{{error}}</font>\n </div>\n</form>\n\n<!--\nThis part was removed from the below line to fix Angular issue 30616 : [disabled]=\"!form.valid || loading\n <button mat-raised-button type=\"submit\" [disabled]=\"!form.valid || loading\">{{'igo.auth.login' | translate}}</button>*/\n-->\n", styles: [".full-width{width:100%}.anonymous{margin-left:10px}\n"] }]
|
|
114
|
+
}], function () { return [{ type: i1.AuthService }, { type: i2.LanguageService }, { type: i3.UntypedFormBuilder }]; }, { allowAnonymous: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], login: [{
|
|
117
|
+
type: Output
|
|
118
|
+
}] }); })();
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcm4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL2F1dGgtZm9ybS9hdXRoLWludGVybi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC1mb3JtL2F1dGgtaW50ZXJuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQXdDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7OztJQ09oRixpQ0FBaUk7SUFBM0Isb0tBQVMsZUFBQSx1QkFBZ0IsQ0FBQSxJQUFDO0lBQzlILFlBQ0Y7O0lBQUEsaUJBQVM7OztJQUZ3RSx5Q0FBb0I7SUFDbkcsZUFDRjtJQURFLGlGQUNGOzs7SUFDQSwyQkFBbUI7SUFDakIscUJBQUs7SUFDTCwrQkFBMkI7SUFBQSxZQUFTO0lBQUEsaUJBQU8sRUFBQTs7O0lBQWhCLGVBQVM7SUFBVCxrQ0FBUzs7QUREeEMsTUFBTSxPQUFPLG1CQUFtQjtJQWdCOUIsWUFDUyxJQUFpQixFQUNoQixlQUFnQyxFQUN4QyxFQUFzQjtRQUZmLFNBQUksR0FBSixJQUFJLENBQWE7UUFDaEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBVmxDLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRXhCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFWCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWIsVUFBSyxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBT25FLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNuQixRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNuQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUNwQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBeEJELElBQ0ksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksY0FBYyxDQUFDLEtBQWM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQW9CRCxTQUFTLENBQUMsTUFBVztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQ3pELEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUMsRUFDRCxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2IsSUFBSTtnQkFDRixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVM7cUJBQzNCLEdBQUcsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztxQkFDNUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7YUFDbkQ7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2FBQ2xDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQyxDQUNGLENBQUM7UUFDRixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7c0ZBcERVLG1CQUFtQjtzRUFBbkIsbUJBQW1CO1FDbEJoQywrQkFBd0U7UUFBbkMsb0dBQVksNkJBQXFCLElBQUM7UUFDckUsMkJBQUssd0JBQUE7UUFFRCwyQkFBa0c7O1FBQ3BHLGlCQUFpQixFQUFBO1FBR25CLDJCQUFLLHdCQUFBO1FBRUQsMkJBQXNIOztRQUN4SCxpQkFBaUIsRUFBQTtRQUduQixpQ0FBd0M7UUFBQSxhQUFnQzs7UUFBQSxpQkFBUztRQUNqRiw0RUFFUztRQUNULHNFQUdNO1FBQ1IsaUJBQU87O1FBckJELG9DQUFrQjtRQUdPLGVBQTZDO1FBQTdDLDhFQUE2QztRQU03QixlQUFpRDtRQUFqRCxrRkFBaUQ7UUFJdEQsZUFBZ0M7UUFBaEMsOERBQWdDO1FBQy9ELGVBQW9CO1FBQXBCLHlDQUFvQjtRQUd2QixlQUFXO1FBQVgsZ0NBQVc7O3VGRENOLG1CQUFtQjtjQU4vQixTQUFTOzJCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxPQUFPOzZIQUk1QyxjQUFjO2tCQURqQixLQUFLO1lBYUksS0FBSztrQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycywgVW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1hdXRoLWludGVybicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRoLWludGVybi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F1dGgtaW50ZXJuLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoSW50ZXJuQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgZ2V0IGFsbG93QW5vbnltb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hbGxvd0Fub255bW91cztcbiAgfVxuICBzZXQgYWxsb3dBbm9ueW1vdXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9hbGxvd0Fub255bW91cyA9IHZhbHVlO1xuICB9XG4gIHByaXZhdGUgX2FsbG93QW5vbnltb3VzID0gdHJ1ZTtcblxuICBwdWJsaWMgZXJyb3IgPSAnJztcbiAgcHVibGljIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIGxvZ2luOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGF1dGg6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgZmI6IFVudHlwZWRGb3JtQnVpbGRlclxuICApIHtcbiAgICB0aGlzLmZvcm0gPSBmYi5ncm91cCh7XG4gICAgICB1c2VybmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHBhc3N3b3JkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgfSk7XG4gIH1cblxuICBsb2dpblVzZXIodmFsdWVzOiBhbnkpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuYXV0aC5sb2dpbih2YWx1ZXMudXNlcm5hbWUsIHZhbHVlcy5wYXNzd29yZCkuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmxvZ2luLmVtaXQodHJ1ZSk7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlXG4gICAgICAgICAgICAuZ2V0KCdpZ28uYXV0aC5lcnJvci4nICsgZXJyb3IuZXJyb3IubWVzc2FnZSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZXJyb3JNc2cgPT4gKHRoaXMuZXJyb3IgPSBlcnJvck1zZykpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yLmVycm9yLm1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBsb2dpbkFub255bW91cygpIHtcbiAgICB0aGlzLmF1dGgubG9naW5Bbm9ueW1vdXMoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5sb2dpbi5lbWl0KHRydWUpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiByb2xlPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJsb2dpblVzZXIoZm9ybS52YWx1ZSlcIj5cbiAgPGRpdj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgcmVxdWlyZWQgcGxhY2Vob2xkZXI9XCJ7eydpZ28uYXV0aC51c2VyJyB8IHRyYW5zbGF0ZX19XCIgZm9ybUNvbnRyb2xOYW1lPVwidXNlcm5hbWVcIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8ZGl2PlxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCByZXF1aXJlZCB0eXBlPVwicGFzc3dvcmRcIiBwbGFjZWhvbGRlcj1cInt7J2lnby5hdXRoLnBhc3N3b3JkJyB8IHRyYW5zbGF0ZX19XCIgZm9ybUNvbnRyb2xOYW1lPVwicGFzc3dvcmRcIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIj57eydpZ28uYXV0aC5sb2dpbicgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICA8YnV0dG9uICpuZ0lmPVwiYWxsb3dBbm9ueW1vdXNcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImFub255bW91c1wiIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiIChjbGljayk9XCJsb2dpbkFub255bW91cygpXCI+XG4gICAge3snaWdvLmF1dGguYWNjZXNzQW5vbnltb3VzJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbiAgPGRpdiAqbmdJZj1cImVycm9yXCI+XG4gICAgPGJyLz5cbiAgICA8Zm9udCBzaXplPVwiM1wiIGNvbG9yPVwicmVkXCI+e3tlcnJvcn19PC9mb250PlxuICA8L2Rpdj5cbjwvZm9ybT5cblxuPCEtLVxuVGhpcyBwYXJ0IHdhcyByZW1vdmVkIGZyb20gdGhlIGJlbG93IGxpbmUgdG8gZml4IEFuZ3VsYXIgaXNzdWUgMzA2MTYgOiBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWQgfHwgbG9hZGluZ1xuICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWQgfHwgbG9hZGluZ1wiPnt7J2lnby5hdXRoLmxvZ2luJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+Ki9cbi0tPlxuIl19
|