ngx-techlify-core 14.7.0 → 14.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/access-control-config/access-control-config-form/access-control-config-form.component.mjs +127 -0
- package/esm2020/lib/access-control-config/access-control-config-routing.module.mjs +31 -0
- package/esm2020/lib/access-control-config/access-control-config.component.mjs +131 -0
- package/esm2020/lib/access-control-config/access-control-config.model.mjs +21 -0
- package/esm2020/lib/access-control-config/access-control-config.module.mjs +60 -0
- package/esm2020/lib/access-control-config/access-control-config.service.mjs +31 -0
- package/esm2020/lib/change-password/change-password-routing.module.mjs +24 -0
- package/esm2020/lib/change-password/change-password.component.mjs +87 -0
- package/esm2020/lib/change-password/change-password.module.mjs +48 -0
- package/esm2020/lib/entity-files/entity-files-view-all.component.mjs +7 -8
- package/esm2020/lib/forgot-password/forgot-password-routing.module.mjs +22 -0
- package/esm2020/lib/forgot-password/forgot-password.component.mjs +67 -0
- package/esm2020/lib/forgot-password/forgot-password.module.mjs +34 -0
- package/esm2020/lib/forgot-password/index.mjs +3 -0
- package/esm2020/lib/ip-address-selector/ip-address-selector.module.mjs +48 -0
- package/esm2020/lib/ip-address-selector/ip-range-selector/ip-range-selector.component.mjs +109 -0
- package/esm2020/lib/login/index.mjs +3 -0
- package/esm2020/lib/login/login-routing.module.mjs +23 -0
- package/esm2020/lib/login/login.component.mjs +153 -0
- package/esm2020/lib/login/login.module.mjs +50 -0
- package/esm2020/lib/ngx-techlify-users/ngx-techlify-users-routing.module.mjs +43 -0
- package/esm2020/lib/ngx-techlify-users/ngx-techlify-users.module.mjs +22 -0
- package/esm2020/lib/password-requirement-check/password-check-result.mjs +2 -0
- package/esm2020/lib/password-requirement-check/password-check.service.mjs +43 -0
- package/esm2020/lib/password-requirement-check/password-requirement-check/password-requirement-check.component.mjs +47 -0
- package/esm2020/lib/password-requirement-check/password-requirement-check.module.mjs +24 -0
- package/esm2020/lib/profile/index.mjs +3 -0
- package/esm2020/lib/profile/profile-edit.component.mjs +75 -0
- package/esm2020/lib/profile/profile-routing.module.mjs +23 -0
- package/esm2020/lib/profile/profile.module.mjs +36 -0
- package/esm2020/lib/restrictors/index.mjs +4 -0
- package/esm2020/lib/restrictors/restrictor-level-selector/restrictor-level-selector/restrictor-level-selector.component.mjs +91 -0
- package/esm2020/lib/restrictors/restrictor-level-selector/restrictor-level-selector.module.mjs +36 -0
- package/esm2020/lib/restrictors/restrictor-level-selector/restrictor-level.service.mjs +19 -0
- package/esm2020/lib/restrictors/restrictor-status-selector/restrictor-status-selector/restrictor-status-selector.component.mjs +91 -0
- package/esm2020/lib/restrictors/restrictor-status-selector/restrictor-status-selector.module.mjs +32 -0
- package/esm2020/lib/restrictors/restrictor-status-selector/restrictor-status.service.mjs +19 -0
- package/esm2020/lib/restrictors/restrictor-type-selector/restrictor-type-selector/restrictor-type-selector.component.mjs +92 -0
- package/esm2020/lib/restrictors/restrictor-type-selector/restrictor-type-selector.module.mjs +36 -0
- package/esm2020/lib/restrictors/restrictor-type-selector/restrictor-type.service.mjs +19 -0
- package/esm2020/lib/restrictors/restrictor.service.mjs +19 -0
- package/esm2020/lib/restrictors/restrictors-form/restrictors-form.component.mjs +102 -0
- package/esm2020/lib/restrictors/restrictors-form-page/restrictors-form-page.component.mjs +44 -0
- package/esm2020/lib/restrictors/restrictors-list-page/restrictors-list-page.component.mjs +145 -0
- package/esm2020/lib/restrictors/restrictors-routing.module.mjs +42 -0
- package/esm2020/lib/restrictors/restrictors.module.mjs +99 -0
- package/esm2020/lib/role/index.mjs +9 -0
- package/esm2020/lib/role/permission/permission.model.mjs +9 -0
- package/esm2020/lib/role/permission/permission.module.mjs +45 -0
- package/esm2020/lib/role/permission/permission.routes.mjs +26 -0
- package/esm2020/lib/role/permission/permissions-management.component.mjs +105 -0
- package/esm2020/lib/role/role-form.component.mjs +99 -0
- package/esm2020/lib/role/role-view/role-view.component.mjs +39 -0
- package/esm2020/lib/role/role.model.mjs +56 -0
- package/esm2020/lib/role/role.module.mjs +59 -0
- package/esm2020/lib/role/role.routes.mjs +28 -0
- package/esm2020/lib/role/role.service.mjs +26 -0
- package/esm2020/lib/role/roles-view-all.component.mjs +131 -0
- package/esm2020/lib/signup/index.mjs +3 -0
- package/esm2020/lib/signup/signup-routing.module.mjs +22 -0
- package/esm2020/lib/signup/signup.component.mjs +78 -0
- package/esm2020/lib/signup/signup.module.mjs +34 -0
- package/esm2020/lib/user/current-user.service.mjs +135 -0
- package/esm2020/lib/user/index.mjs +8 -0
- package/esm2020/lib/user/user-explore.component.mjs +50 -0
- package/esm2020/lib/user/user-form.component.mjs +219 -0
- package/esm2020/lib/user/user-view.component.mjs +68 -0
- package/esm2020/lib/user/user.model.mjs +30 -0
- package/esm2020/lib/user/user.module.mjs +99 -0
- package/esm2020/lib/user/user.routes.mjs +29 -0
- package/esm2020/lib/user/user.service.mjs +31 -0
- package/esm2020/lib/user/users-view-all.component.mjs +208 -0
- package/esm2020/lib/user-config/index.mjs +3 -0
- package/esm2020/lib/user-config/user-config.model.mjs +50 -0
- package/esm2020/lib/user-config/user-config.service.mjs +65 -0
- package/esm2020/lib/user-selector/index.mjs +3 -0
- package/esm2020/lib/user-selector/user-data.service.mjs +35 -0
- package/esm2020/lib/user-selector/user-selector.component.mjs +91 -0
- package/esm2020/lib/user-selector/user-selector.module.mjs +38 -0
- package/esm2020/public-api.mjs +24 -1
- package/fesm2015/ngx-techlify-core.mjs +3791 -170
- package/fesm2015/ngx-techlify-core.mjs.map +1 -1
- package/fesm2020/ngx-techlify-core.mjs +3759 -170
- package/fesm2020/ngx-techlify-core.mjs.map +1 -1
- package/lib/access-control-config/access-control-config-form/access-control-config-form.component.d.ts +44 -0
- package/lib/access-control-config/access-control-config-routing.module.d.ts +7 -0
- package/lib/access-control-config/access-control-config.component.d.ts +31 -0
- package/lib/access-control-config/access-control-config.model.d.ts +17 -0
- package/lib/access-control-config/access-control-config.module.d.ts +18 -0
- package/lib/access-control-config/access-control-config.service.d.ts +13 -0
- package/lib/change-password/change-password-routing.module.d.ts +7 -0
- package/lib/change-password/change-password.component.d.ts +27 -0
- package/lib/change-password/change-password.module.d.ts +14 -0
- package/lib/forgot-password/forgot-password-routing.module.d.ts +7 -0
- package/lib/forgot-password/forgot-password.component.d.ts +34 -0
- package/lib/forgot-password/forgot-password.module.d.ts +11 -0
- package/lib/forgot-password/index.d.ts +2 -0
- package/lib/ip-address-selector/ip-address-selector.module.d.ts +14 -0
- package/lib/ip-address-selector/ip-range-selector/ip-range-selector.component.d.ts +28 -0
- package/lib/login/index.d.ts +2 -0
- package/lib/login/login-routing.module.d.ts +7 -0
- package/lib/login/login.component.d.ts +53 -0
- package/lib/login/login.module.d.ts +15 -0
- package/lib/ngx-techlify-users/ngx-techlify-users-routing.module.d.ts +7 -0
- package/lib/ngx-techlify-users/ngx-techlify-users.module.d.ts +8 -0
- package/lib/password-requirement-check/password-check-result.d.ts +7 -0
- package/lib/password-requirement-check/password-check.service.d.ts +15 -0
- package/lib/password-requirement-check/password-requirement-check/password-requirement-check.component.d.ts +22 -0
- package/lib/password-requirement-check/password-requirement-check.module.d.ts +8 -0
- package/lib/profile/index.d.ts +2 -0
- package/lib/profile/profile-edit.component.d.ts +33 -0
- package/lib/profile/profile-routing.module.d.ts +7 -0
- package/lib/profile/profile.module.d.ts +11 -0
- package/lib/restrictors/index.d.ts +3 -0
- package/lib/restrictors/restrictor-level-selector/restrictor-level-selector/restrictor-level-selector.component.d.ts +34 -0
- package/lib/restrictors/restrictor-level-selector/restrictor-level-selector.module.d.ts +11 -0
- package/lib/restrictors/restrictor-level-selector/restrictor-level.service.d.ts +9 -0
- package/lib/restrictors/restrictor-status-selector/restrictor-status-selector/restrictor-status-selector.component.d.ts +34 -0
- package/lib/restrictors/restrictor-status-selector/restrictor-status-selector.module.d.ts +10 -0
- package/lib/restrictors/restrictor-status-selector/restrictor-status.service.d.ts +9 -0
- package/lib/restrictors/restrictor-type-selector/restrictor-type-selector/restrictor-type-selector.component.d.ts +34 -0
- package/lib/restrictors/restrictor-type-selector/restrictor-type-selector.module.d.ts +11 -0
- package/lib/restrictors/restrictor-type-selector/restrictor-type.service.d.ts +9 -0
- package/lib/restrictors/restrictor.service.d.ts +9 -0
- package/lib/restrictors/restrictors-form/restrictors-form.component.d.ts +30 -0
- package/lib/restrictors/restrictors-form-page/restrictors-form-page.component.d.ts +21 -0
- package/lib/restrictors/restrictors-list-page/restrictors-list-page.component.d.ts +51 -0
- package/lib/restrictors/restrictors-routing.module.d.ts +7 -0
- package/lib/restrictors/restrictors.module.d.ts +28 -0
- package/lib/role/index.d.ts +8 -0
- package/lib/role/permission/permission.model.d.ts +11 -0
- package/lib/role/permission/permission.module.d.ts +12 -0
- package/lib/role/permission/permission.routes.d.ts +7 -0
- package/lib/role/permission/permissions-management.component.d.ts +38 -0
- package/lib/role/role-form.component.d.ts +34 -0
- package/lib/role/role-view/role-view.component.d.ts +16 -0
- package/lib/role/role.model.d.ts +31 -0
- package/lib/role/role.module.d.ts +16 -0
- package/lib/role/role.routes.d.ts +7 -0
- package/lib/role/role.service.d.ts +11 -0
- package/lib/role/roles-view-all.component.d.ts +40 -0
- package/lib/signup/index.d.ts +2 -0
- package/lib/signup/signup-routing.module.d.ts +7 -0
- package/lib/signup/signup.component.d.ts +29 -0
- package/lib/signup/signup.module.d.ts +11 -0
- package/lib/user/current-user.service.d.ts +63 -0
- package/lib/user/index.d.ts +7 -0
- package/lib/user/user-explore.component.d.ts +26 -0
- package/lib/user/user-form.component.d.ts +52 -0
- package/lib/user/user-view.component.d.ts +31 -0
- package/lib/user/user.model.d.ts +29 -0
- package/lib/user/user.module.d.ts +26 -0
- package/lib/user/user.routes.d.ts +7 -0
- package/lib/user/user.service.d.ts +13 -0
- package/lib/user/users-view-all.component.d.ts +56 -0
- package/lib/user-config/index.d.ts +2 -0
- package/lib/user-config/user-config.model.d.ts +50 -0
- package/lib/user-config/user-config.service.d.ts +14 -0
- package/lib/user-selector/index.d.ts +2 -0
- package/lib/user-selector/user-data.service.d.ts +16 -0
- package/lib/user-selector/user-selector.component.d.ts +29 -0
- package/lib/user-selector/user-selector.module.d.ts +10 -0
- package/package.json +1 -1
- package/public-api.d.ts +23 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { ForgotPasswordRoutingModule } from './forgot-password-routing.module';
|
|
5
|
+
import { ForgotPasswordComponent } from './forgot-password.component';
|
|
6
|
+
import { MaterialModule } from '../material.module';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class ForgotPasswordModule {
|
|
9
|
+
}
|
|
10
|
+
ForgotPasswordModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ForgotPasswordModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
11
|
+
ForgotPasswordModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: ForgotPasswordModule, declarations: [ForgotPasswordComponent], imports: [CommonModule,
|
|
12
|
+
ReactiveFormsModule,
|
|
13
|
+
MaterialModule,
|
|
14
|
+
ForgotPasswordRoutingModule] });
|
|
15
|
+
ForgotPasswordModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ForgotPasswordModule, imports: [CommonModule,
|
|
16
|
+
ReactiveFormsModule,
|
|
17
|
+
MaterialModule,
|
|
18
|
+
ForgotPasswordRoutingModule] });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ForgotPasswordModule, decorators: [{
|
|
20
|
+
type: NgModule,
|
|
21
|
+
args: [{
|
|
22
|
+
imports: [
|
|
23
|
+
CommonModule,
|
|
24
|
+
ReactiveFormsModule,
|
|
25
|
+
MaterialModule,
|
|
26
|
+
ForgotPasswordRoutingModule
|
|
27
|
+
],
|
|
28
|
+
declarations: [
|
|
29
|
+
ForgotPasswordComponent
|
|
30
|
+
],
|
|
31
|
+
providers: []
|
|
32
|
+
}]
|
|
33
|
+
}] });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZ290LXBhc3N3b3JkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZm9yZ290LXBhc3N3b3JkL2ZvcmdvdC1wYXNzd29yZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQWVwRCxNQUFNLE9BQU8sb0JBQW9COztpSEFBcEIsb0JBQW9CO2tIQUFwQixvQkFBb0IsaUJBTDdCLHVCQUF1QixhQU52QixZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCwyQkFBMkI7a0hBUWxCLG9CQUFvQixZQVg3QixZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCwyQkFBMkI7MkZBUWxCLG9CQUFvQjtrQkFiaEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsMkJBQTJCO3FCQUM1QjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osdUJBQXVCO3FCQUN4QjtvQkFDRCxTQUFTLEVBQUUsRUFDVjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcmdvdFBhc3N3b3JkUm91dGluZ01vZHVsZSB9IGZyb20gJy4vZm9yZ290LXBhc3N3b3JkLXJvdXRpbmcubW9kdWxlJztcbmltcG9ydCB7IEZvcmdvdFBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi9mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi4vbWF0ZXJpYWwubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIEZvcmdvdFBhc3N3b3JkUm91dGluZ01vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBGb3Jnb3RQYXNzd29yZENvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb3Jnb3RQYXNzd29yZE1vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './forgot-password.component';
|
|
2
|
+
export * from './forgot-password-routing.module';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ZvcmdvdC1wYXNzd29yZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsa0NBQWtDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3Jnb3QtcGFzc3dvcmQtcm91dGluZy5tb2R1bGUnO1xuIl19
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { IpRangeSelectorComponent } from './ip-range-selector/ip-range-selector.component';
|
|
4
|
+
import { FlexModule } from '@angular/flex-layout';
|
|
5
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
6
|
+
import { MatInputModule } from '@angular/material/input';
|
|
7
|
+
import { MatOptionModule } from '@angular/material/core';
|
|
8
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
9
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class IpAddressSelectorModule {
|
|
12
|
+
}
|
|
13
|
+
IpAddressSelectorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: IpAddressSelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
14
|
+
IpAddressSelectorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: IpAddressSelectorModule, declarations: [IpRangeSelectorComponent], imports: [CommonModule,
|
|
15
|
+
FlexModule,
|
|
16
|
+
MatFormFieldModule,
|
|
17
|
+
MatInputModule,
|
|
18
|
+
MatOptionModule,
|
|
19
|
+
MatSelectModule,
|
|
20
|
+
ReactiveFormsModule], exports: [IpRangeSelectorComponent] });
|
|
21
|
+
IpAddressSelectorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: IpAddressSelectorModule, imports: [CommonModule,
|
|
22
|
+
FlexModule,
|
|
23
|
+
MatFormFieldModule,
|
|
24
|
+
MatInputModule,
|
|
25
|
+
MatOptionModule,
|
|
26
|
+
MatSelectModule,
|
|
27
|
+
ReactiveFormsModule] });
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: IpAddressSelectorModule, decorators: [{
|
|
29
|
+
type: NgModule,
|
|
30
|
+
args: [{
|
|
31
|
+
declarations: [
|
|
32
|
+
IpRangeSelectorComponent
|
|
33
|
+
],
|
|
34
|
+
imports: [
|
|
35
|
+
CommonModule,
|
|
36
|
+
FlexModule,
|
|
37
|
+
MatFormFieldModule,
|
|
38
|
+
MatInputModule,
|
|
39
|
+
MatOptionModule,
|
|
40
|
+
MatSelectModule,
|
|
41
|
+
ReactiveFormsModule,
|
|
42
|
+
],
|
|
43
|
+
exports: [
|
|
44
|
+
IpRangeSelectorComponent
|
|
45
|
+
]
|
|
46
|
+
}]
|
|
47
|
+
}] });
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXAtYWRkcmVzcy1zZWxlY3Rvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2lwLWFkZHJlc3Mtc2VsZWN0b3IvaXAtYWRkcmVzcy1zZWxlY3Rvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDM0YsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQXFCbkQsTUFBTSxPQUFPLHVCQUF1Qjs7b0hBQXZCLHVCQUF1QjtxSEFBdkIsdUJBQXVCLGlCQWZoQyx3QkFBd0IsYUFHcEIsWUFBWTtRQUNaLFVBQVU7UUFDVixrQkFBa0I7UUFDbEIsY0FBYztRQUNkLGVBQWU7UUFDZixlQUFlO1FBQ2YsbUJBQW1CLGFBR3ZCLHdCQUF3QjtxSEFHZix1QkFBdUIsWUFaNUIsWUFBWTtRQUNaLFVBQVU7UUFDVixrQkFBa0I7UUFDbEIsY0FBYztRQUNkLGVBQWU7UUFDZixlQUFlO1FBQ2YsbUJBQW1COzJGQU1kLHVCQUF1QjtrQkFqQm5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHdCQUF3QjtxQkFDekI7b0JBQ0MsT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osVUFBVTt3QkFDVixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixlQUFlO3dCQUNmLG1CQUFtQjtxQkFDdEI7b0JBQ0gsT0FBTyxFQUFFO3dCQUNQLHdCQUF3QjtxQkFDekI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElwUmFuZ2VTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vaXAtcmFuZ2Utc2VsZWN0b3IvaXAtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7RmxleE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZmxleC1sYXlvdXQnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHtNYXRPcHRpb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtNYXRTZWxlY3RNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQge1JlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIElwUmFuZ2VTZWxlY3RvckNvbXBvbmVudFxuICBdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGbGV4TW9kdWxlLFxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBNYXRPcHRpb25Nb2R1bGUsXG4gICAgICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBdLFxuICBleHBvcnRzOiBbXG4gICAgSXBSYW5nZVNlbGVjdG9yQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSXBBZGRyZXNzU2VsZWN0b3JNb2R1bGUgeyB9XG4iXX0=
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/* tslint:disable:component-selector radix */
|
|
2
|
+
import { Component, Input } from '@angular/core';
|
|
3
|
+
import { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/flex-layout/flex";
|
|
7
|
+
import * as i3 from "@angular/material/form-field";
|
|
8
|
+
import * as i4 from "@angular/material/input";
|
|
9
|
+
import * as i5 from "@angular/material/core";
|
|
10
|
+
import * as i6 from "@angular/material/select";
|
|
11
|
+
import * as i7 from "@angular/forms";
|
|
12
|
+
export class IpRangeSelectorComponent {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.label = 'IP Range';
|
|
15
|
+
this.subnetOptions = [
|
|
16
|
+
{ value: 32, range: 1 },
|
|
17
|
+
{ value: 31, range: 2 },
|
|
18
|
+
{ value: 30, range: 4 },
|
|
19
|
+
{ value: 29, range: 8 },
|
|
20
|
+
{ value: 28, range: 16 },
|
|
21
|
+
{ value: 27, range: 32 },
|
|
22
|
+
{ value: 26, range: 64 },
|
|
23
|
+
{ value: 25, range: 128 },
|
|
24
|
+
{ value: 24, range: 256 },
|
|
25
|
+
{ value: 23, range: 512 },
|
|
26
|
+
{ value: 22, range: 1024 },
|
|
27
|
+
{ value: 21, range: 2048 },
|
|
28
|
+
{ value: 20, range: 4096 },
|
|
29
|
+
{ value: 19, range: 8192 },
|
|
30
|
+
{ value: 18, range: 16384 },
|
|
31
|
+
{ value: 17, range: 32768 },
|
|
32
|
+
{ value: 16, range: 65536 },
|
|
33
|
+
{ value: 15, range: 131072 },
|
|
34
|
+
{ value: 14, range: 262144 },
|
|
35
|
+
{ value: 13, range: 524288 },
|
|
36
|
+
{ value: 12, range: 1048576 },
|
|
37
|
+
{ value: 11, range: 2096152 },
|
|
38
|
+
{ value: 10, range: 4194304 },
|
|
39
|
+
{ value: 9, range: 8388608 },
|
|
40
|
+
{ value: 8, range: 16777216 },
|
|
41
|
+
{ value: 7, range: 33554432 },
|
|
42
|
+
{ value: 6, range: 67108864 },
|
|
43
|
+
{ value: 5, range: 134217728 },
|
|
44
|
+
{ value: 4, range: 268435456 },
|
|
45
|
+
{ value: 3, range: 536870912 },
|
|
46
|
+
{ value: 2, range: 1073741824 },
|
|
47
|
+
{ value: 1, range: 2147483648 },
|
|
48
|
+
];
|
|
49
|
+
this.disabled = false;
|
|
50
|
+
this.ipAddressControl = new FormControl('');
|
|
51
|
+
this.subnetControl = new FormControl(32);
|
|
52
|
+
this.onChange = (value) => { };
|
|
53
|
+
this.onTouched = () => { };
|
|
54
|
+
}
|
|
55
|
+
ngOnInit() {
|
|
56
|
+
this.ipAddressControl.valueChanges.subscribe(() => this.updateValue());
|
|
57
|
+
this.subnetControl.valueChanges.subscribe(() => this.updateValue());
|
|
58
|
+
}
|
|
59
|
+
registerOnChange(fn) {
|
|
60
|
+
this.onChange = fn;
|
|
61
|
+
}
|
|
62
|
+
writeValue(val) {
|
|
63
|
+
if (val) {
|
|
64
|
+
const [ipAddress, subnet] = val.split('/');
|
|
65
|
+
this.ipAddressControl.setValue(ipAddress);
|
|
66
|
+
this.subnetControl.setValue(Number.parseInt(subnet));
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
this.subnetControl.setValue(32);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
registerOnTouched(fn) {
|
|
73
|
+
this.onTouched = fn;
|
|
74
|
+
}
|
|
75
|
+
setDisabledState(isDisabled) {
|
|
76
|
+
this.disabled = isDisabled;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Update the control value.
|
|
80
|
+
* @private
|
|
81
|
+
*/
|
|
82
|
+
updateValue() {
|
|
83
|
+
const ipAddress = this.ipAddressControl.value;
|
|
84
|
+
const subnet = this.subnetControl.value;
|
|
85
|
+
this.onChange(ipAddress + '/' + subnet);
|
|
86
|
+
this.onTouched();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
IpRangeSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: IpRangeSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
90
|
+
IpRangeSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: IpRangeSelectorComponent, selector: "techlify-ip-range-selector", inputs: { label: "label" }, providers: [
|
|
91
|
+
{
|
|
92
|
+
provide: NG_VALUE_ACCESSOR,
|
|
93
|
+
multi: true,
|
|
94
|
+
useExisting: IpRangeSelectorComponent
|
|
95
|
+
}
|
|
96
|
+
], ngImport: i0, template: "<div fxLayout fxLayoutGap=\"10px\" class=\"w-100\">\n <mat-form-field fxFlex=\"calc(85% - 10px)\">\n <mat-label>{{ label }}</mat-label>\n <input type=\"text\" matInput placeholder=\"IP Range\" [formControl]=\"ipAddressControl\">\n <mat-hint>\n What is the ip address or range that we should block? Format can be either a single IP like\n <code>192.175.32.133</code> OR a range specifying the subnet like <code>192.175.32.0/24</code>\n </mat-hint>\n </mat-form-field>\n <mat-form-field fxFlex=\"calc(15% - 10px)\">\n <mat-select [formControl]=\"subnetControl\">\n <mat-option *ngFor=\"let subnet of subnetOptions\" [value]=\"subnet.value\">\n /{{ subnet.value }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n", styles: [".custom-suffix{background:gray;margin-top:-20px;position:absolute;right:0;top:20px;height:50px;border-radius:4px;padding-top:20px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
97
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: IpRangeSelectorComponent, decorators: [{
|
|
98
|
+
type: Component,
|
|
99
|
+
args: [{ selector: 'techlify-ip-range-selector', providers: [
|
|
100
|
+
{
|
|
101
|
+
provide: NG_VALUE_ACCESSOR,
|
|
102
|
+
multi: true,
|
|
103
|
+
useExisting: IpRangeSelectorComponent
|
|
104
|
+
}
|
|
105
|
+
], template: "<div fxLayout fxLayoutGap=\"10px\" class=\"w-100\">\n <mat-form-field fxFlex=\"calc(85% - 10px)\">\n <mat-label>{{ label }}</mat-label>\n <input type=\"text\" matInput placeholder=\"IP Range\" [formControl]=\"ipAddressControl\">\n <mat-hint>\n What is the ip address or range that we should block? Format can be either a single IP like\n <code>192.175.32.133</code> OR a range specifying the subnet like <code>192.175.32.0/24</code>\n </mat-hint>\n </mat-form-field>\n <mat-form-field fxFlex=\"calc(15% - 10px)\">\n <mat-select [formControl]=\"subnetControl\">\n <mat-option *ngFor=\"let subnet of subnetOptions\" [value]=\"subnet.value\">\n /{{ subnet.value }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n", styles: [".custom-suffix{background:gray;margin-top:-20px;position:absolute;right:0;top:20px;height:50px;border-radius:4px;padding-top:20px}\n"] }]
|
|
106
|
+
}], ctorParameters: function () { return []; }, propDecorators: { label: [{
|
|
107
|
+
type: Input
|
|
108
|
+
}] } });
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXAtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9pcC1hZGRyZXNzLXNlbGVjdG9yL2lwLXJhbmdlLXNlbGVjdG9yL2lwLXJhbmdlLXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvaXAtYWRkcmVzcy1zZWxlY3Rvci9pcC1yYW5nZS1zZWxlY3Rvci9pcC1yYW5nZS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2Q0FBNkM7QUFDN0MsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUF1QixXQUFXLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBY3BGLE1BQU0sT0FBTyx3QkFBd0I7SUFFbkM7UUFFUyxVQUFLLEdBQUcsVUFBVSxDQUFDO1FBRTVCLGtCQUFhLEdBQUc7WUFDZCxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUN2QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUN2QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUN2QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUN2QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUN4QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUN4QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUN4QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUN6QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUN6QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUN6QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMzQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMzQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMzQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUM1QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUM1QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUM1QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUM3QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUM3QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUM3QixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUM1QixFQUFFLEtBQUssRUFBRSxDQUFD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QUUsSUFBSTs0QkFDWCxXQUFXLDBCQUEwQjt5QkFDdEM7cUJBQ0Y7MEVBTVEsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGU6Y29tcG9uZW50LXNlbGVjdG9yIHJhZGl4ICovXG5pbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGVjaGxpZnktaXAtcmFuZ2Utc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vaXAtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pcC1yYW5nZS1zZWxlY3Rvci5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogSXBSYW5nZVNlbGVjdG9yQ29tcG9uZW50XG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIElwUmFuZ2VTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgQElucHV0KCkgbGFiZWwgPSAnSVAgUmFuZ2UnO1xuXG4gIHN1Ym5ldE9wdGlvbnMgPSBbXG4gICAgeyB2YWx1ZTogMzIsIHJhbmdlOiAxIH0sXG4gICAgeyB2YWx1ZTogMzEsIHJhbmdlOiAyIH0sXG4gICAgeyB2YWx1ZTogMzAsIHJhbmdlOiA0IH0sXG4gICAgeyB2YWx1ZTogMjksIHJhbmdlOiA4IH0sXG4gICAgeyB2YWx1ZTogMjgsIHJhbmdlOiAxNiB9LFxuICAgIHsgdmFsdWU6IDI3LCByYW5nZTogMzIgfSxcbiAgICB7IHZhbHVlOiAyNiwgcmFuZ2U6IDY0IH0sXG4gICAgeyB2YWx1ZTogMjUsIHJhbmdlOiAxMjggfSxcbiAgICB7IHZhbHVlOiAyNCwgcmFuZ2U6IDI1NiB9LFxuICAgIHsgdmFsdWU6IDIzLCByYW5nZTogNTEyIH0sXG4gICAgeyB2YWx1ZTogMjIsIHJhbmdlOiAxMDI0IH0sXG4gICAgeyB2YWx1ZTogMjEsIHJhbmdlOiAyMDQ4IH0sXG4gICAgeyB2YWx1ZTogMjAsIHJhbmdlOiA0MDk2IH0sXG4gICAgeyB2YWx1ZTogMTksIHJhbmdlOiA4MTkyIH0sXG4gICAgeyB2YWx1ZTogMTgsIHJhbmdlOiAxNjM4NCB9LFxuICAgIHsgdmFsdWU6IDE3LCByYW5nZTogMzI3NjggfSxcbiAgICB7IHZhbHVlOiAxNiwgcmFuZ2U6IDY1NTM2IH0sXG4gICAgeyB2YWx1ZTogMTUsIHJhbmdlOiAxMzEwNzIgfSxcbiAgICB7IHZhbHVlOiAxNCwgcmFuZ2U6IDI2MjE0NCB9LFxuICAgIHsgdmFsdWU6IDEzLCByYW5nZTogNTI0Mjg4IH0sXG4gICAgeyB2YWx1ZTogMTIsIHJhbmdlOiAxMDQ4NTc2IH0sXG4gICAgeyB2YWx1ZTogMTEsIHJhbmdlOiAyMDk2MTUyIH0sXG4gICAgeyB2YWx1ZTogMTAsIHJhbmdlOiA0MTk0MzA0IH0sXG4gICAgeyB2YWx1ZTogOSwgcmFuZ2U6IDgzODg2MDggfSxcbiAgICB7IHZhbHVlOiA4LCByYW5nZTogMTY3NzcyMTYgfSxcbiAgICB7IHZhbHVlOiA3LCByYW5nZTogMzM1NTQ0MzIgfSxcbiAgICB7IHZhbHVlOiA2LCByYW5nZTogNjcxMDg4NjQgfSxcbiAgICB7IHZhbHVlOiA1LCByYW5nZTogMTM0MjE3NzI4IH0sXG4gICAgeyB2YWx1ZTogNCwgcmFuZ2U6IDI2ODQzNTQ1NiB9LFxuICAgIHsgdmFsdWU6IDMsIHJhbmdlOiA1MzY4NzA5MTIgfSxcbiAgICB7IHZhbHVlOiAyLCByYW5nZTogMTA3Mzc0MTgyNCB9LFxuICAgIHsgdmFsdWU6IDEsIHJhbmdlOiAyMTQ3NDgzNjQ4IH0sXG4gIF07XG4gIGRpc2FibGVkID0gZmFsc2U7XG4gIGlwQWRkcmVzc0NvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICBzdWJuZXRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKDMyKTtcblxuICBvbkNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7fTtcblxuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlwQWRkcmVzc0NvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVZhbHVlKCkpO1xuICAgIHRoaXMuc3VibmV0Q29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlVmFsdWUoKSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHZhbCkge1xuICAgICAgY29uc3QgW2lwQWRkcmVzcywgc3VibmV0XSA9IHZhbC5zcGxpdCgnLycpO1xuICAgICAgdGhpcy5pcEFkZHJlc3NDb250cm9sLnNldFZhbHVlKGlwQWRkcmVzcyk7XG4gICAgICB0aGlzLnN1Ym5ldENvbnRyb2wuc2V0VmFsdWUoTnVtYmVyLnBhcnNlSW50KHN1Ym5ldCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN1Ym5ldENvbnRyb2wuc2V0VmFsdWUoMzIpO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgY29udHJvbCB2YWx1ZS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVmFsdWUoKTogdm9pZCB7XG4gICAgY29uc3QgaXBBZGRyZXNzID0gdGhpcy5pcEFkZHJlc3NDb250cm9sLnZhbHVlO1xuICAgIGNvbnN0IHN1Ym5ldCA9IHRoaXMuc3VibmV0Q29udHJvbC52YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKGlwQWRkcmVzcyArICcvJyArIHN1Ym5ldCk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxufVxuIiwiPGRpdiBmeExheW91dCBmeExheW91dEdhcD1cIjEwcHhcIiBjbGFzcz1cInctMTAwXCI+XG4gIDxtYXQtZm9ybS1maWVsZCBmeEZsZXg9XCJjYWxjKDg1JSAtIDEwcHgpXCI+XG4gICAgPG1hdC1sYWJlbD57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IHBsYWNlaG9sZGVyPVwiSVAgUmFuZ2VcIiBbZm9ybUNvbnRyb2xdPVwiaXBBZGRyZXNzQ29udHJvbFwiPlxuICAgIDxtYXQtaGludD5cbiAgICAgIFdoYXQgaXMgdGhlIGlwIGFkZHJlc3Mgb3IgcmFuZ2UgdGhhdCB3ZSBzaG91bGQgYmxvY2s/IEZvcm1hdCBjYW4gYmUgZWl0aGVyIGEgc2luZ2xlIElQIGxpa2VcbiAgICAgIDxjb2RlPjE5Mi4xNzUuMzIuMTMzPC9jb2RlPiBPUiBhIHJhbmdlIHNwZWNpZnlpbmcgdGhlIHN1Ym5ldCBsaWtlIDxjb2RlPjE5Mi4xNzUuMzIuMC8yNDwvY29kZT5cbiAgICA8L21hdC1oaW50PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4PVwiY2FsYygxNSUgLSAxMHB4KVwiPlxuICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJzdWJuZXRDb250cm9sXCI+XG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgc3VibmV0IG9mIHN1Ym5ldE9wdGlvbnNcIiBbdmFsdWVdPVwic3VibmV0LnZhbHVlXCI+XG4gICAgICAgIC97eyBzdWJuZXQudmFsdWUgfX1cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './login.component';
|
|
2
|
+
export * from './login-routing.module';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2xvZ2luL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbG9naW4uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbG9naW4tcm91dGluZy5tb2R1bGUnO1xuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { RouterModule } from '@angular/router';
|
|
3
|
+
import { LoginComponent } from './login.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/router";
|
|
6
|
+
const routes = [
|
|
7
|
+
{ path: '', component: LoginComponent },
|
|
8
|
+
{ path: ':id', component: LoginComponent }
|
|
9
|
+
];
|
|
10
|
+
export class LoginRoutingModule {
|
|
11
|
+
}
|
|
12
|
+
LoginRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
+
LoginRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: LoginRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
|
|
14
|
+
LoginRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginRoutingModule, decorators: [{
|
|
16
|
+
type: NgModule,
|
|
17
|
+
args: [{
|
|
18
|
+
imports: [RouterModule.forChild(routes)],
|
|
19
|
+
exports: [RouterModule],
|
|
20
|
+
providers: []
|
|
21
|
+
}]
|
|
22
|
+
}] });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2xvZ2luL2xvZ2luLXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFVLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBRW5ELE1BQU0sTUFBTSxHQUFXO0lBQ3JCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO0lBQ3ZDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO0NBQzNDLENBQUM7QUFPRixNQUFNLE9BQU8sa0JBQWtCOzsrR0FBbEIsa0JBQWtCO2dIQUFsQixrQkFBa0Isd0NBSG5CLFlBQVk7Z0hBR1gsa0JBQWtCLFlBSm5CLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzdCLFlBQVk7MkZBR1gsa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVzLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTG9naW5Db21wb25lbnQgfSBmcm9tICcuL2xvZ2luLmNvbXBvbmVudCc7XG5cbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICB7IHBhdGg6ICcnLCBjb21wb25lbnQ6IExvZ2luQ29tcG9uZW50IH0sXG4gIHsgcGF0aDogJzppZCcsIGNvbXBvbmVudDogTG9naW5Db21wb25lbnQgfVxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpXSxcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZV0sXG4gIHByb3ZpZGVyczogW11cbn0pXG5leHBvcnQgY2xhc3MgTG9naW5Sb3V0aW5nTW9kdWxlIHsgfVxuIl19
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component } from '@angular/core';
|
|
3
|
+
import { Validators, UntypedFormControl } from '@angular/forms';
|
|
4
|
+
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
|
5
|
+
import { finalize } from 'rxjs/operators';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../core";
|
|
8
|
+
import * as i2 from "@angular/router";
|
|
9
|
+
import * as i3 from "../user";
|
|
10
|
+
import * as i4 from "@angular/forms";
|
|
11
|
+
import * as i5 from "../user-config";
|
|
12
|
+
import * as i6 from "@angular/common";
|
|
13
|
+
import * as i7 from "@angular/material/button";
|
|
14
|
+
import * as i8 from "@angular/material/form-field";
|
|
15
|
+
import * as i9 from "@angular/material/input";
|
|
16
|
+
import * as i10 from "@angular/material/card";
|
|
17
|
+
import * as i11 from "@angular/flex-layout/flex";
|
|
18
|
+
const errorMessages = {
|
|
19
|
+
email: {
|
|
20
|
+
required: 'Email is required',
|
|
21
|
+
email: 'Invalid email'
|
|
22
|
+
},
|
|
23
|
+
password: {
|
|
24
|
+
required: 'Password is required'
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
let LoginComponent = class LoginComponent {
|
|
28
|
+
constructor(http, alerter, router, authService, config, currentUserService, errorService, storage, credentialService, fb, formValidatorService, route, userConfigService) {
|
|
29
|
+
this.http = http;
|
|
30
|
+
this.alerter = alerter;
|
|
31
|
+
this.router = router;
|
|
32
|
+
this.authService = authService;
|
|
33
|
+
this.config = config;
|
|
34
|
+
this.currentUserService = currentUserService;
|
|
35
|
+
this.errorService = errorService;
|
|
36
|
+
this.storage = storage;
|
|
37
|
+
this.credentialService = credentialService;
|
|
38
|
+
this.fb = fb;
|
|
39
|
+
this.formValidatorService = formValidatorService;
|
|
40
|
+
this.route = route;
|
|
41
|
+
this.userConfigService = userConfigService;
|
|
42
|
+
this.isWorking = false;
|
|
43
|
+
this.loginForm = fb.group({
|
|
44
|
+
email: new UntypedFormControl('', [Validators.required, Validators.email]),
|
|
45
|
+
password: new UntypedFormControl('', Validators.required),
|
|
46
|
+
});
|
|
47
|
+
this.userConfig = this.userConfigService.getConfig();
|
|
48
|
+
}
|
|
49
|
+
ngOnInit() {
|
|
50
|
+
this.route.queryParams.subscribe(params => {
|
|
51
|
+
if (params.access_token) {
|
|
52
|
+
const authData = {
|
|
53
|
+
access_token: params.access_token,
|
|
54
|
+
expires_in: params.expires_in,
|
|
55
|
+
refresh_token: ''
|
|
56
|
+
};
|
|
57
|
+
authData.expires_in = authData.expires_in * 1000;
|
|
58
|
+
this.credentialService.setCredentials({ user: {}, token: authData }, true);
|
|
59
|
+
this.loadUser();
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
if (this.credentialService.isAuthenticated) {
|
|
63
|
+
this.router.navigate(['/dashboard']);
|
|
64
|
+
}
|
|
65
|
+
/* Lets clear all localstorage items */
|
|
66
|
+
this.storage.removeItem('currentModule');
|
|
67
|
+
this.storage.removeItem('currentUser');
|
|
68
|
+
}
|
|
69
|
+
login() {
|
|
70
|
+
if (!this.loginForm.valid) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
this.isWorking = true;
|
|
74
|
+
// reset login error
|
|
75
|
+
this.loginError = null;
|
|
76
|
+
const data = {
|
|
77
|
+
client_id: 2,
|
|
78
|
+
client_secret: this.config.getAuthClientSecret(),
|
|
79
|
+
grant_type: this.config.getAuthGrantType(),
|
|
80
|
+
username: this.loginForm.value.email,
|
|
81
|
+
password: this.loginForm.value.password,
|
|
82
|
+
remember: true
|
|
83
|
+
};
|
|
84
|
+
this.credentialService.setCredentials();
|
|
85
|
+
const login$ = this.authService.login(data);
|
|
86
|
+
login$.pipe(finalize(() => this.isWorking = false), untilDestroyed(this)).subscribe(credentials => {
|
|
87
|
+
this.router.navigate([this.route.snapshot.queryParams.redirect || 'dashboard'], { replaceUrl: true });
|
|
88
|
+
}, error => {
|
|
89
|
+
this.handleLoginErrors(error);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
loadUser() {
|
|
93
|
+
/* Lets load the current user */
|
|
94
|
+
this.currentUserService.getUserObservable(true).subscribe(user => {
|
|
95
|
+
if (!this.userConfig.allowAllUsersToLogin) {
|
|
96
|
+
if ((!this.userConfig.allowAppAdminLogin && user.user_type_id == 1) || (this.userConfig.allowAppAdminLogin && user.user_type_id != 1)) {
|
|
97
|
+
this.alerter.addAlert('Sorry, you\'re not allowed access to this app. ', 'warning');
|
|
98
|
+
this.authService.logout();
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
this.alerter.addAlert('Successfully Logged In. You will be taken to the dashboard in a moment. ', 'success');
|
|
103
|
+
const credentials = this.credentialService.credentials;
|
|
104
|
+
credentials.user = user;
|
|
105
|
+
this.credentialService.setCredentials(credentials, true);
|
|
106
|
+
this.user = user;
|
|
107
|
+
if ((!this.userConfig.loginWithoutSubscription) && !this.user.client.subscriptions.length) {
|
|
108
|
+
this.router.navigate(['/module/subscriptions']);
|
|
109
|
+
}
|
|
110
|
+
else if (this.user.temporarily_invited) {
|
|
111
|
+
this.router.navigate(['/profile-edit']);
|
|
112
|
+
}
|
|
113
|
+
else if (this.user.is_temporary_password) {
|
|
114
|
+
this.router.navigate(['/user/change-password']);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
this.router.navigate(['/dashboard']);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
redirect(provider) {
|
|
122
|
+
window.location.href = this.userConfig.socialLoginRedirectUrl + provider;
|
|
123
|
+
}
|
|
124
|
+
/** Method to evaluate form fields*/
|
|
125
|
+
isFieldValid(field) {
|
|
126
|
+
return this.formValidatorService.isFieldValid(field, this.loginForm);
|
|
127
|
+
}
|
|
128
|
+
/** Method to find error in form fields*/
|
|
129
|
+
getErrorMessage(field) {
|
|
130
|
+
return this.formValidatorService.getErrorMessage(field, this.loginForm, errorMessages);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Handle the login errors.
|
|
134
|
+
*
|
|
135
|
+
* @param errorObj
|
|
136
|
+
* @private
|
|
137
|
+
*/
|
|
138
|
+
handleLoginErrors(errorObj) {
|
|
139
|
+
const { error, error_description } = errorObj?.error;
|
|
140
|
+
this.loginError = { type: error, message: error_description };
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginComponent, deps: [{ token: i1.HttpService }, { token: i1.AlertService }, { token: i2.Router }, { token: i1.AuthenticationService }, { token: i1.ConfigService }, { token: i3.CurrentUserService }, { token: i1.ErrorHandlerService }, { token: i1.StorageService }, { token: i1.CredentialsService }, { token: i4.UntypedFormBuilder }, { token: i1.FormValidatorService }, { token: i2.ActivatedRoute }, { token: i5.UserConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
144
|
+
LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: LoginComponent, selector: "login", ngImport: i0, template: "<div class=\"h-100\"\n fxLayout fxLayoutAlign=\"center center\"\n style=\"background: #fafafa;\">\n <mat-card fxFlex=\"30%\" class=\"mb-3 mt-3\">\n <header class=\"branding-block mb-0 mt-4\">\n <div class=\"branding text-center\">\n <a *ngIf=\"userConfig.appLogoUrl\" href=\"{{userConfig.appUrl}}\" target=\"_blank\">\n <img class=\"techlify-logo d-inline-block\" [src]=\"userConfig.appLogoUrl\" alt=\"Logo\"/>\n </a>\n </div>\n <div class=\"product-info text-center mt-2\">\n <h3 class=\"product-name\">{{ userConfig.appName }}</h3>\n </div>\n </header>\n\n <div id=\"login-form-wrapper\">\n <h4 class=\"section-title text-center mt-4\">LOGIN</h4>\n <form [formGroup]=\"loginForm\"\n (ngSubmit)=\"login()\"\n fxLayout=\"column\" fxLayoutAlign=\"start\" fxLayoutGap=\"10px\">\n <mat-form-field>\n <mat-label>Email</mat-label>\n <input matInput\n formControlName=\"email\"\n placeholder=\"Email\"\n type=\"email\"\n autocomplete=\"off\"\n required />\n <mat-error *ngIf=\"isFieldValid('email')\">{{getErrorMessage('email')}}</mat-error>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Password</mat-label>\n <input matInput\n formControlName=\"password\"\n placeholder=\"Password\"\n type=\"password\"\n autocomplete=\"off\"\n required />\n <mat-error *ngIf=\"isFieldValid('password')\">{{getErrorMessage('password')}}</mat-error>\n </mat-form-field>\n\n <div class=\"alert alert-danger\" *ngIf=\"loginError\">\n <p class=\"mb-0\">{{ loginError?.message }}</p>\n </div>\n\n <button mat-raised-button color=\"primary\" class=\"w-100\" type=\"submit\" [disabled]=\"isWorking\">\n LOGIN\n </button>\n\n <div class=\"mt-2\" *ngIf=\"userConfig.showSocialLogin\">\n <button class=\"w-100 google-button mb-2\"\n mat-raised-button type=\"button\"\n (click)=\"redirect('google')\">Google</button>\n\n <button class=\"w-100 facebook-button\"\n mat-raised-button type=\"button\"\n (click)=\"redirect('facebook')\">Facebook</button>\n </div>\n <div class=\"mt-2 mb-4 text-center\"\n *ngIf=\"userConfig.showForgotPassword\">\n <a href=\"javascript:;\" [routerLink]=\"['/forgot-password']\">Forgot password?</a>\n </div>\n </form>\n </div>\n\n <div class=\"mt-3 p-0 mr-0 ml-0\" *ngIf=\"userConfig.showSignup\">\n <p>New to {{ userConfig.appName }}?</p>\n <button mat-raised-button class=\"w-100\" color=\"accent\" type=\"button\"\n [routerLink]=\"['/signup']\">\n Create an account\n </button>\n </div>\n </mat-card>\n</div>\n", styles: ["#login-form-wrapper{margin-top:40px}#login-form-wrapper .branding-block{margin-bottom:60px}#login-form-wrapper .techlify-logo{height:40px;padding-right:10px;bottom:10px;position:relative}#login-form-wrapper .company-name{margin-bottom:0}#login-form-wrapper .google-button{background:#ce1d1d;color:#fff}#login-form-wrapper .facebook-button{background:#38388e;color:#fff}:host{width:100%}.white-box{background-color:#fff;padding:10px}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i8.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i2.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i11.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i11.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i11.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i11.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
|
|
145
|
+
LoginComponent = __decorate([
|
|
146
|
+
UntilDestroy()
|
|
147
|
+
], LoginComponent);
|
|
148
|
+
export { LoginComponent };
|
|
149
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginComponent, decorators: [{
|
|
150
|
+
type: Component,
|
|
151
|
+
args: [{ selector: 'login', template: "<div class=\"h-100\"\n fxLayout fxLayoutAlign=\"center center\"\n style=\"background: #fafafa;\">\n <mat-card fxFlex=\"30%\" class=\"mb-3 mt-3\">\n <header class=\"branding-block mb-0 mt-4\">\n <div class=\"branding text-center\">\n <a *ngIf=\"userConfig.appLogoUrl\" href=\"{{userConfig.appUrl}}\" target=\"_blank\">\n <img class=\"techlify-logo d-inline-block\" [src]=\"userConfig.appLogoUrl\" alt=\"Logo\"/>\n </a>\n </div>\n <div class=\"product-info text-center mt-2\">\n <h3 class=\"product-name\">{{ userConfig.appName }}</h3>\n </div>\n </header>\n\n <div id=\"login-form-wrapper\">\n <h4 class=\"section-title text-center mt-4\">LOGIN</h4>\n <form [formGroup]=\"loginForm\"\n (ngSubmit)=\"login()\"\n fxLayout=\"column\" fxLayoutAlign=\"start\" fxLayoutGap=\"10px\">\n <mat-form-field>\n <mat-label>Email</mat-label>\n <input matInput\n formControlName=\"email\"\n placeholder=\"Email\"\n type=\"email\"\n autocomplete=\"off\"\n required />\n <mat-error *ngIf=\"isFieldValid('email')\">{{getErrorMessage('email')}}</mat-error>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Password</mat-label>\n <input matInput\n formControlName=\"password\"\n placeholder=\"Password\"\n type=\"password\"\n autocomplete=\"off\"\n required />\n <mat-error *ngIf=\"isFieldValid('password')\">{{getErrorMessage('password')}}</mat-error>\n </mat-form-field>\n\n <div class=\"alert alert-danger\" *ngIf=\"loginError\">\n <p class=\"mb-0\">{{ loginError?.message }}</p>\n </div>\n\n <button mat-raised-button color=\"primary\" class=\"w-100\" type=\"submit\" [disabled]=\"isWorking\">\n LOGIN\n </button>\n\n <div class=\"mt-2\" *ngIf=\"userConfig.showSocialLogin\">\n <button class=\"w-100 google-button mb-2\"\n mat-raised-button type=\"button\"\n (click)=\"redirect('google')\">Google</button>\n\n <button class=\"w-100 facebook-button\"\n mat-raised-button type=\"button\"\n (click)=\"redirect('facebook')\">Facebook</button>\n </div>\n <div class=\"mt-2 mb-4 text-center\"\n *ngIf=\"userConfig.showForgotPassword\">\n <a href=\"javascript:;\" [routerLink]=\"['/forgot-password']\">Forgot password?</a>\n </div>\n </form>\n </div>\n\n <div class=\"mt-3 p-0 mr-0 ml-0\" *ngIf=\"userConfig.showSignup\">\n <p>New to {{ userConfig.appName }}?</p>\n <button mat-raised-button class=\"w-100\" color=\"accent\" type=\"button\"\n [routerLink]=\"['/signup']\">\n Create an account\n </button>\n </div>\n </mat-card>\n</div>\n", styles: ["#login-form-wrapper{margin-top:40px}#login-form-wrapper .branding-block{margin-bottom:60px}#login-form-wrapper .techlify-logo{height:40px;padding-right:10px;bottom:10px;position:relative}#login-form-wrapper .company-name{margin-bottom:0}#login-form-wrapper .google-button{background:#ce1d1d;color:#fff}#login-form-wrapper .facebook-button{background:#38388e;color:#fff}:host{width:100%}.white-box{background-color:#fff;padding:10px}\n"] }]
|
|
152
|
+
}], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i1.AlertService }, { type: i2.Router }, { type: i1.AuthenticationService }, { type: i1.ConfigService }, { type: i3.CurrentUserService }, { type: i1.ErrorHandlerService }, { type: i1.StorageService }, { type: i1.CredentialsService }, { type: i4.UntypedFormBuilder }, { type: i1.FormValidatorService }, { type: i2.ActivatedRoute }, { type: i5.UserConfigService }]; } });
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9sb2dpbi9sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2xvZ2luL2xvZ2luLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFPbEQsT0FBTyxFQUF3QyxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUt0RyxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUkxQyxNQUFNLGFBQWEsR0FBUTtJQUN6QixLQUFLLEVBQUU7UUFDTCxRQUFRLEVBQUUsbUJBQW1CO1FBQzdCLEtBQUssRUFBRSxlQUFlO0tBQ3ZCO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsUUFBUSxFQUFFLHNCQUFzQjtLQUNqQztDQUNGLENBQUM7SUFTVyxjQUFjLFNBQWQsY0FBYztJQU96QixZQUNVLElBQWlCLEVBQ2pCLE9BQXFCLEVBQ3JCLE1BQWMsRUFDZCxXQUFrQyxFQUNsQyxNQUFxQixFQUN0QixrQkFBc0MsRUFDckMsWUFBaUMsRUFDakMsT0FBdUIsRUFDdkIsaUJBQXFDLEVBQ3JDLEVBQXNCLEVBQ3RCLG9CQUEwQyxFQUMxQyxLQUFxQixFQUN0QixpQkFBb0M7UUFabkMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUFjO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUN0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QyxLQUFhO1FBQzNCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxpQkFBaUIsQ0FBQyxRQUFhO1FBQ3JDLE1BQU0sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxRQUFRLEVBQUUsS0FBSyxDQUFDO1FBQ3JELElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDO0lBQ2hFLENBQUM7Q0FDRixDQUFBOzJHQXpJWSxjQUFjOytGQUFkLGNBQWMsNkNDbEMzQiw2NkZBMEVBO0FEeENhLGNBQWM7SUFQMUIsWUFBWSxFQUFFO0dBT0YsY0FBYyxDQXlJMUI7U0F6SVksY0FBYzsyRkFBZCxjQUFjO2tCQU4xQixTQUFTOytCQUVFLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UsIEZvcm1WYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZSc7XG5cbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAsIFVudHlwZWRGb3JtQnVpbGRlciwgVmFsaWRhdG9ycywgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBVc2VyQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3VzZXItY29uZmlnJztcbmltcG9ydCB7IE11bHRpVXNlckNvbmZpZyB9IGZyb20gJy4uL3VzZXItY29uZmlnJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSwgQ3JlZGVudGlhbHNTZXJ2aWNlLCBFcnJvckhhbmRsZXJTZXJ2aWNlLCBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi91c2VyJztcbmltcG9ydCB7IEN1cnJlbnRVc2VyU2VydmljZSB9IGZyb20gJy4uL3VzZXInO1xuXG5jb25zdCBlcnJvck1lc3NhZ2VzOiBhbnkgPSB7XG4gIGVtYWlsOiB7XG4gICAgcmVxdWlyZWQ6ICdFbWFpbCBpcyByZXF1aXJlZCcsXG4gICAgZW1haWw6ICdJbnZhbGlkIGVtYWlsJ1xuICB9LFxuICBwYXNzd29yZDoge1xuICAgIHJlcXVpcmVkOiAnUGFzc3dvcmQgaXMgcmVxdWlyZWQnXG4gIH1cbn07XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsb2dpbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2dpbi5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9naW4uc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgdXNlcjogVXNlcjtcbiAgaXNXb3JraW5nID0gZmFsc2U7XG4gIGxvZ2luRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgdXNlckNvbmZpZzogTXVsdGlVc2VyQ29uZmlnO1xuICBsb2dpbkVycm9yOiB7IHR5cGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0ZXI6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZSxcbiAgICBwdWJsaWMgY3VycmVudFVzZXJTZXJ2aWNlOiBDdXJyZW50VXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlcnJvclNlcnZpY2U6IEVycm9ySGFuZGxlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGNyZWRlbnRpYWxTZXJ2aWNlOiBDcmVkZW50aWFsc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgZm9ybVZhbGlkYXRvclNlcnZpY2U6IEZvcm1WYWxpZGF0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHB1YmxpYyB1c2VyQ29uZmlnU2VydmljZTogVXNlckNvbmZpZ1NlcnZpY2UsXG4gICkge1xuICAgIHRoaXMubG9naW5Gb3JtID0gZmIuZ3JvdXAoe1xuICAgICAgZW1haWw6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXSksXG4gICAgICBwYXNzd29yZDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgfSk7XG4gICAgdGhpcy51c2VyQ29uZmlnID0gdGhpcy51c2VyQ29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKFxuICAgICAgcGFyYW1zID0+IHtcbiAgICAgICAgaWYgKHBhcmFtcy5hY2Nlc3NfdG9rZW4pIHtcbiAgICAgICAgICBjb25zdCBhdXRoRGF0YSA9IHtcbiAgICAgICAgICAgIGFjY2Vzc190b2tlbjogcGFyYW1zLmFjY2Vzc190b2tlbixcbiAgICAgICAgICAgIGV4cGlyZXNfaW46IHBhcmFtcy5leHBpcmVzX2luLFxuICAgICAgICAgICAgcmVmcmVzaF90b2tlbjogJydcbiAgICAgICAgICB9O1xuICAgICAgICAgIGF1dGhEYXRhLmV4cGlyZXNfaW4gPSBhdXRoRGF0YS5leHBpcmVzX2luICogMTAwMDtcbiAgICAgICAgICB0aGlzLmNyZWRlbnRpYWxTZXJ2aWNlLnNldENyZWRlbnRpYWxzKHsgdXNlcjoge30sIHRva2VuOiBhdXRoRGF0YSB9LCB0cnVlKTtcbiAgICAgICAgICB0aGlzLmxvYWRVc2VyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIGlmICh0aGlzLmNyZWRlbnRpYWxTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvZGFzaGJvYXJkJ10pO1xuICAgIH1cbiAgICAvKiBMZXRzIGNsZWFyIGFsbCBsb2NhbHN0b3JhZ2UgaXRlbXMgKi9cbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbSgnY3VycmVudE1vZHVsZScpO1xuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKCdjdXJyZW50VXNlcicpO1xuICB9XG5cbiAgbG9naW4oKSB7XG4gICAgaWYgKCF0aGlzLmxvZ2luRm9ybS52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgLy8gcmVzZXQgbG9naW4gZXJyb3JcbiAgICB0aGlzLmxvZ2luRXJyb3IgPSBudWxsO1xuXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGNsaWVudF9pZDogMixcbiAgICAgIGNsaWVudF9zZWNyZXQ6IHRoaXMuY29uZmlnLmdldEF1dGhDbGllbnRTZWNyZXQoKSxcbiAgICAgIGdyYW50X3R5cGU6IHRoaXMuY29uZmlnLmdldEF1dGhHcmFudFR5cGUoKSxcbiAgICAgIHVzZXJuYW1lOiB0aGlzLmxvZ2luRm9ybS52YWx1ZS5lbWFpbCxcbiAgICAgIHBhc3N3b3JkOiB0aGlzLmxvZ2luRm9ybS52YWx1ZS5wYXNzd29yZCxcbiAgICAgIHJlbWVtYmVyOiB0cnVlXG4gICAgfTtcbiAgICB0aGlzLmNyZWRlbnRpYWxTZXJ2aWNlLnNldENyZWRlbnRpYWxzKCk7XG4gICAgY29uc3QgbG9naW4kID0gdGhpcy5hdXRoU2VydmljZS5sb2dpbihkYXRhKTtcbiAgICBsb2dpbiQucGlwZShcbiAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNXb3JraW5nID0gZmFsc2UpLFxuICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICApLnN1YnNjcmliZShjcmVkZW50aWFscyA9PiB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5yZWRpcmVjdCB8fCAnZGFzaGJvYXJkJ10sIHsgcmVwbGFjZVVybDogdHJ1ZSB9KTtcbiAgICB9LFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUxvZ2luRXJyb3JzKGVycm9yKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbG9hZFVzZXIoKSB7XG4gICAgLyogTGV0cyBsb2FkIHRoZSBjdXJyZW50IHVzZXIgKi9cbiAgICB0aGlzLmN1cnJlbnRVc2VyU2VydmljZS5nZXRVc2VyT2JzZXJ2YWJsZSh0cnVlKS5zdWJzY3JpYmUoXG4gICAgICB1c2VyID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnVzZXJDb25maWcuYWxsb3dBbGxVc2Vyc1RvTG9naW4pIHtcbiAgICAgICAgICBpZiAoKCF0aGlzLnVzZXJDb25maWcuYWxsb3dBcHBBZG1pbkxvZ2luICYmIHVzZXIudXNlcl90eXBlX2lkID09IDEpIHx8ICh0aGlzLnVzZXJDb25maWcuYWxsb3dBcHBBZG1pbkxvZ2luICYmIHVzZXIudXNlcl90eXBlX2lkICE9IDEpKSB7XG4gICAgICAgICAgICB0aGlzLmFsZXJ0ZXIuYWRkQWxlcnQoJ1NvcnJ5LCB5b3VcXCdyZSBub3QgYWxsb3dlZCBhY2Nlc3MgdG8gdGhpcyBhcHAuICcsICd3YXJuaW5nJyk7XG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ291dCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWxlcnRlci5hZGRBbGVydCgnU3VjY2Vzc2Z1bGx5IExvZ2dlZCBJbi4gWW91IHdpbGwgYmUgdGFrZW4gdG8gdGhlIGRhc2hib2FyZCBpbiBhIG1vbWVudC4gJywgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgY29uc3QgY3JlZGVudGlhbHMgPSB0aGlzLmNyZWRlbnRpYWxTZXJ2aWNlLmNyZWRlbnRpYWxzO1xuICAgICAgICBjcmVkZW50aWFscy51c2VyID0gdXNlcjtcbiAgICAgICAgdGhpcy5jcmVkZW50aWFsU2VydmljZS5zZXRDcmVkZW50aWFscyhjcmVkZW50aWFscywgdHJ1ZSk7XG4gICAgICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgICAgIGlmICgoIXRoaXMudXNlckNvbmZpZy5sb2dpbldpdGhvdXRTdWJzY3JpcHRpb24pICYmICF0aGlzLnVzZXIuY2xpZW50LnN1YnNjcmlwdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbW9kdWxlL3N1YnNjcmlwdGlvbnMnXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy51c2VyLnRlbXBvcmFyaWx5X2ludml0ZWQpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wcm9maWxlLWVkaXQnXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy51c2VyLmlzX3RlbXBvcmFyeV9wYXNzd29yZCkge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3VzZXIvY2hhbmdlLXBhc3N3b3JkJ10pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Rhc2hib2FyZCddKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICByZWRpcmVjdChwcm92aWRlcikge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy51c2VyQ29uZmlnLnNvY2lhbExvZ2luUmVkaXJlY3RVcmwgKyBwcm92aWRlcjtcbiAgfVxuXG4gIC8qKiBNZXRob2QgdG8gZXZhbHVhdGUgZm9ybSBmaWVsZHMqL1xuICBpc0ZpZWxkVmFsaWQoZmllbGQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZvcm1WYWxpZGF0b3JTZXJ2aWNlLmlzRmllbGRWYWxpZChmaWVsZCwgdGhpcy5sb2dpbkZvcm0pO1xuICB9XG5cbiAgLyoqIE1ldGhvZCB0byBmaW5kIGVycm9yIGluIGZvcm0gZmllbGRzKi9cbiAgZ2V0RXJyb3JNZXNzYWdlKGZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtVmFsaWRhdG9yU2VydmljZS5nZXRFcnJvck1lc3NhZ2UoZmllbGQsIHRoaXMubG9naW5Gb3JtLCBlcnJvck1lc3NhZ2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIGxvZ2luIGVycm9ycy5cbiAgICpcbiAgICogQHBhcmFtIGVycm9yT2JqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZUxvZ2luRXJyb3JzKGVycm9yT2JqOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB7IGVycm9yLCBlcnJvcl9kZXNjcmlwdGlvbiB9ID0gZXJyb3JPYmo/LmVycm9yO1xuICAgIHRoaXMubG9naW5FcnJvciA9IHsgdHlwZTogZXJyb3IsIG1lc3NhZ2U6IGVycm9yX2Rlc2NyaXB0aW9uIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJoLTEwMFwiXG4gICAgIGZ4TGF5b3V0IGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCJcbiAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOiAjZmFmYWZhO1wiPlxuICA8bWF0LWNhcmQgZnhGbGV4PVwiMzAlXCIgY2xhc3M9XCJtYi0zIG10LTNcIj5cbiAgICA8aGVhZGVyIGNsYXNzPVwiYnJhbmRpbmctYmxvY2sgbWItMCBtdC00XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYnJhbmRpbmcgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgPGEgKm5nSWY9XCJ1c2VyQ29uZmlnLmFwcExvZ29VcmxcIiBocmVmPVwie3t1c2VyQ29uZmlnLmFwcFVybH19XCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgPGltZyBjbGFzcz1cInRlY2hsaWZ5LWxvZ28gZC1pbmxpbmUtYmxvY2tcIiBbc3JjXT1cInVzZXJDb25maWcuYXBwTG9nb1VybFwiICBhbHQ9XCJMb2dvXCIvPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWluZm8gdGV4dC1jZW50ZXIgbXQtMlwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJwcm9kdWN0LW5hbWVcIj57eyB1c2VyQ29uZmlnLmFwcE5hbWUgfX08L2gzPlxuICAgICAgPC9kaXY+XG4gICAgPC9oZWFkZXI+XG5cbiAgICA8ZGl2IGlkPVwibG9naW4tZm9ybS13cmFwcGVyXCI+XG4gICAgICA8aDQgY2xhc3M9XCJzZWN0aW9uLXRpdGxlIHRleHQtY2VudGVyIG10LTRcIj5MT0dJTjwvaDQ+XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImxvZ2luRm9ybVwiXG4gICAgICAgICAgICAobmdTdWJtaXQpPVwibG9naW4oKVwiXG4gICAgICAgICAgICBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydFwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1sYWJlbD5FbWFpbDwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW1haWxcIlxuICAgICAgICAgICAgICAgICB0eXBlPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICByZXF1aXJlZCAvPlxuICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ2VtYWlsJylcIj57e2dldEVycm9yTWVzc2FnZSgnZW1haWwnKX19PC9tYXQtZXJyb3I+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LWxhYmVsPlBhc3N3b3JkPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IG1hdElucHV0XG4gICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgIHJlcXVpcmVkIC8+XG4gICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgncGFzc3dvcmQnKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKCdwYXNzd29yZCcpfX08L21hdC1lcnJvcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCIgKm5nSWY9XCJsb2dpbkVycm9yXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgbG9naW5FcnJvcj8ubWVzc2FnZSB9fTwvcD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cInctMTAwXCIgdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJpc1dvcmtpbmdcIj5cbiAgICAgICAgICBMT0dJTlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiICpuZ0lmPVwidXNlckNvbmZpZy5zaG93U29jaWFsTG9naW5cIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidy0xMDAgZ29vZ2xlLWJ1dHRvbiBtYi0yXCJcbiAgICAgICAgICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlZGlyZWN0KCdnb29nbGUnKVwiPkdvb2dsZTwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInctMTAwIGZhY2Vib29rLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWRpcmVjdCgnZmFjZWJvb2snKVwiPkZhY2Vib29rPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBtYi00IHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAqbmdJZj1cInVzZXJDb25maWcuc2hvd0ZvcmdvdFBhc3N3b3JkXCI+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIFtyb3V0ZXJMaW5rXT1cIlsnL2ZvcmdvdC1wYXNzd29yZCddXCI+Rm9yZ290IHBhc3N3b3JkPzwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibXQtMyBwLTAgbXItMCBtbC0wXCIgKm5nSWY9XCJ1c2VyQ29uZmlnLnNob3dTaWdudXBcIj5cbiAgICAgIDxwPk5ldyB0byB7eyB1c2VyQ29uZmlnLmFwcE5hbWUgfX0/PC9wPlxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cInctMTAwXCIgY29sb3I9XCJhY2NlbnRcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9zaWdudXAnXVwiPlxuICAgICAgICAgIENyZWF0ZSBhbiBhY2NvdW50XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtY2FyZD5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { LoginRoutingModule } from './login-routing.module';
|
|
5
|
+
import { LoginComponent } from './login.component';
|
|
6
|
+
import { MaterialModule } from '../material.module';
|
|
7
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
8
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
9
|
+
import { FlexModule } from '@angular/flex-layout';
|
|
10
|
+
import { MatCardModule } from '@angular/material/card';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
export class LoginModule {
|
|
13
|
+
}
|
|
14
|
+
LoginModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
+
LoginModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: LoginModule, declarations: [LoginComponent], imports: [CommonModule,
|
|
16
|
+
ReactiveFormsModule,
|
|
17
|
+
MaterialModule,
|
|
18
|
+
LoginRoutingModule,
|
|
19
|
+
MatFormFieldModule,
|
|
20
|
+
MatButtonModule,
|
|
21
|
+
FlexModule,
|
|
22
|
+
MatCardModule] });
|
|
23
|
+
LoginModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginModule, imports: [CommonModule,
|
|
24
|
+
ReactiveFormsModule,
|
|
25
|
+
MaterialModule,
|
|
26
|
+
LoginRoutingModule,
|
|
27
|
+
MatFormFieldModule,
|
|
28
|
+
MatButtonModule,
|
|
29
|
+
FlexModule,
|
|
30
|
+
MatCardModule] });
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginModule, decorators: [{
|
|
32
|
+
type: NgModule,
|
|
33
|
+
args: [{
|
|
34
|
+
imports: [
|
|
35
|
+
CommonModule,
|
|
36
|
+
ReactiveFormsModule,
|
|
37
|
+
MaterialModule,
|
|
38
|
+
LoginRoutingModule,
|
|
39
|
+
MatFormFieldModule,
|
|
40
|
+
MatButtonModule,
|
|
41
|
+
FlexModule,
|
|
42
|
+
MatCardModule
|
|
43
|
+
],
|
|
44
|
+
declarations: [
|
|
45
|
+
LoginComponent
|
|
46
|
+
],
|
|
47
|
+
providers: [],
|
|
48
|
+
}]
|
|
49
|
+
}] });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9sb2dpbi9sb2dpbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7QUFrQnJELE1BQU0sT0FBTyxXQUFXOzt3R0FBWCxXQUFXO3lHQUFYLFdBQVcsaUJBTHBCLGNBQWMsYUFWZCxZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCxrQkFBa0I7UUFDbEIsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixVQUFVO1FBQ1YsYUFBYTt5R0FRSixXQUFXLFlBZnBCLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIsY0FBYztRQUNkLGtCQUFrQjtRQUNsQixrQkFBa0I7UUFDbEIsZUFBZTtRQUNmLFVBQVU7UUFDVixhQUFhOzJGQVFKLFdBQVc7a0JBakJ2QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixVQUFVO3dCQUNWLGFBQWE7cUJBQ2Q7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLGNBQWM7cUJBQ2Y7b0JBQ0QsU0FBUyxFQUFFLEVBQ1Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2dpblJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2xvZ2luLXJvdXRpbmcubW9kdWxlJztcbmltcG9ydCB7IExvZ2luQ29tcG9uZW50IH0gZnJvbSAnLi9sb2dpbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge0ZsZXhNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcbmltcG9ydCB7TWF0Q2FyZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0ZXJpYWxNb2R1bGUsXG4gICAgTG9naW5Sb3V0aW5nTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgRmxleE1vZHVsZSxcbiAgICBNYXRDYXJkTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIExvZ2luQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBMb2dpbk1vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { RouterModule } from '@angular/router';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/router";
|
|
5
|
+
const routes = [
|
|
6
|
+
{
|
|
7
|
+
path: '', redirectTo: 'users', pathMatch: 'full'
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
path: 'users',
|
|
11
|
+
loadChildren: () => import('../user/user.module').then(mod => mod.UserModule)
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
path: 'roles',
|
|
15
|
+
loadChildren: () => import('../role/role.module').then(mod => mod.RoleModule)
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
path: 'role-permissions',
|
|
19
|
+
loadChildren: () => import('../role/permission/permission.module').then(mod => mod.PermissionModule),
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
path: 'configurations',
|
|
23
|
+
loadChildren: () => import('../access-control-config/access-control-config.module')
|
|
24
|
+
.then(mod => mod.AccessControlConfigModule)
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
path: 'restrictors',
|
|
28
|
+
loadChildren: () => import('../restrictors/restrictors.module').then(mod => mod.RestrictorsModule)
|
|
29
|
+
}
|
|
30
|
+
];
|
|
31
|
+
export class NgxTechlifyUsersRoutingModule {
|
|
32
|
+
}
|
|
33
|
+
NgxTechlifyUsersRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyUsersRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
34
|
+
NgxTechlifyUsersRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyUsersRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
|
|
35
|
+
NgxTechlifyUsersRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyUsersRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyUsersRoutingModule, decorators: [{
|
|
37
|
+
type: NgModule,
|
|
38
|
+
args: [{
|
|
39
|
+
imports: [RouterModule.forChild(routes)],
|
|
40
|
+
exports: [RouterModule]
|
|
41
|
+
}]
|
|
42
|
+
}] });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRlY2hsaWZ5LXVzZXJzLXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9uZ3gtdGVjaGxpZnktdXNlcnMvbmd4LXRlY2hsaWZ5LXVzZXJzLXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBVSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFdkQsTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU07S0FDakQ7SUFDRDtRQUNFLElBQUksRUFBRSxPQUFPO1FBQ2IsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7S0FDOUU7SUFDRDtRQUNFLElBQUksRUFBRSxPQUFPO1FBQ2IsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7S0FDOUU7SUFDRDtRQUNFLElBQUksRUFBRSxrQkFBa0I7UUFDeEIsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztLQUNyRztJQUNEO1FBQ0UsSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHVEQUF1RCxDQUFDO2FBQ2hGLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQztLQUM5QztJQUNEO1FBQ0UsSUFBSSxFQUFFLGFBQWE7UUFDbkIsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQztLQUNuRztDQUNGLENBQUM7QUFNRixNQUFNLE9BQU8sNkJBQTZCOzswSEFBN0IsNkJBQTZCOzJIQUE3Qiw2QkFBNkIsd0NBRjlCLFlBQVk7MkhBRVgsNkJBQTZCLFlBSDlCLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzdCLFlBQVk7MkZBRVgsNkJBQTZCO2tCQUp6QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICcnLCByZWRpcmVjdFRvOiAndXNlcnMnLCBwYXRoTWF0Y2g6ICdmdWxsJ1xuICB9LFxuICB7XG4gICAgcGF0aDogJ3VzZXJzJyxcbiAgICBsb2FkQ2hpbGRyZW46ICgpID0+IGltcG9ydCgnLi4vdXNlci91c2VyLm1vZHVsZScpLnRoZW4obW9kID0+IG1vZC5Vc2VyTW9kdWxlKVxuICB9LFxuICB7XG4gICAgcGF0aDogJ3JvbGVzJyxcbiAgICBsb2FkQ2hpbGRyZW46ICgpID0+IGltcG9ydCgnLi4vcm9sZS9yb2xlLm1vZHVsZScpLnRoZW4obW9kID0+IG1vZC5Sb2xlTW9kdWxlKVxuICB9LFxuICB7XG4gICAgcGF0aDogJ3JvbGUtcGVybWlzc2lvbnMnLFxuICAgIGxvYWRDaGlsZHJlbjogKCkgPT4gaW1wb3J0KCcuLi9yb2xlL3Blcm1pc3Npb24vcGVybWlzc2lvbi5tb2R1bGUnKS50aGVuKG1vZCA9PiBtb2QuUGVybWlzc2lvbk1vZHVsZSksXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnY29uZmlndXJhdGlvbnMnLFxuICAgIGxvYWRDaGlsZHJlbjogKCkgPT4gaW1wb3J0KCcuLi9hY2Nlc3MtY29udHJvbC1jb25maWcvYWNjZXNzLWNvbnRyb2wtY29uZmlnLm1vZHVsZScpXG4gICAgICAudGhlbihtb2QgPT4gbW9kLkFjY2Vzc0NvbnRyb2xDb25maWdNb2R1bGUpXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAncmVzdHJpY3RvcnMnLFxuICAgIGxvYWRDaGlsZHJlbjogKCkgPT4gaW1wb3J0KCcuLi9yZXN0cmljdG9ycy9yZXN0cmljdG9ycy5tb2R1bGUnKS50aGVuKG1vZCA9PiBtb2QuUmVzdHJpY3RvcnNNb2R1bGUpXG4gIH1cbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKV0sXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIE5neFRlY2hsaWZ5VXNlcnNSb3V0aW5nTW9kdWxlIHsgfVxuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NgxTechlifyUsersRoutingModule } from './ngx-techlify-users-routing.module';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class NgxTechlifyUsersModule {
|
|
6
|
+
}
|
|
7
|
+
NgxTechlifyUsersModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyUsersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
NgxTechlifyUsersModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyUsersModule, imports: [CommonModule,
|
|
9
|
+
NgxTechlifyUsersRoutingModule] });
|
|
10
|
+
NgxTechlifyUsersModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyUsersModule, imports: [CommonModule,
|
|
11
|
+
NgxTechlifyUsersRoutingModule] });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyUsersModule, decorators: [{
|
|
13
|
+
type: NgModule,
|
|
14
|
+
args: [{
|
|
15
|
+
declarations: [],
|
|
16
|
+
imports: [
|
|
17
|
+
CommonModule,
|
|
18
|
+
NgxTechlifyUsersRoutingModule
|
|
19
|
+
]
|
|
20
|
+
}]
|
|
21
|
+
}] });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRlY2hsaWZ5LXVzZXJzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvbmd4LXRlY2hsaWZ5LXVzZXJzL25neC10ZWNobGlmeS11c2Vycy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBU3BGLE1BQU0sT0FBTyxzQkFBc0I7O21IQUF0QixzQkFBc0I7b0hBQXRCLHNCQUFzQixZQUovQixZQUFZO1FBQ1osNkJBQTZCO29IQUdwQixzQkFBc0IsWUFKL0IsWUFBWTtRQUNaLDZCQUE2QjsyRkFHcEIsc0JBQXNCO2tCQVBsQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWiw2QkFBNkI7cUJBQzlCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IE5neFRlY2hsaWZ5VXNlcnNSb3V0aW5nTW9kdWxlIH0gZnJvbSAnLi9uZ3gtdGVjaGxpZnktdXNlcnMtcm91dGluZy5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE5neFRlY2hsaWZ5VXNlcnNSb3V0aW5nTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4VGVjaGxpZnlVc2Vyc01vZHVsZSB7IH1cbiJdfQ==
|