import { ConfigState, GetAppConfiguration, RestService, DynamicLayoutComponent, SessionState, SetTenant, CoreModule } from '@abp/ng.core';
import { ToasterService, ThemeSharedModule } from '@abp/ng.theme.shared';
import { Component, Optional, Inject, Injectable, ɵɵdefineInjectable, ɵɵinject, NgModule, InjectionToken } from '@angular/core';
import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
import { NgxValidateCoreModule } from '@ngx-validate/core';
import { TableModule } from 'primeng/table';
import { RouterModule } from '@angular/router';
import { Validators, FormBuilder } from '@angular/forms';
import { Navigate } from '@ngxs/router-plugin';
import { Store } from '@ngxs/store';
import { OAuthService } from 'angular-oauth2-oidc';
import { from, throwError } from 'rxjs';
import { switchMap, tap, catchError, finalize, take } from 'rxjs/operators';
import snq from 'snq';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
const { maxLength, minLength, required } = Validators;
class LoginComponent {
/**
* @param {?} fb
* @param {?} oauthService
* @param {?} store
* @param {?} toasterService
* @param {?} options
*/
constructor(fb, oauthService, store, toasterService, options) {
this.fb = fb;
this.oauthService = oauthService;
this.store = store;
this.toasterService = toasterService;
this.options = options;
this.oauthService.configure(this.store.selectSnapshot(ConfigState.getOne('environment')).oAuthConfig);
this.oauthService.loadDiscoveryDocument();
this.form = this.fb.group({
username: ['', [required, maxLength(255)]],
password: ['', [required, maxLength(32)]],
remember: [false],
});
}
/**
* @return {?}
*/
onSubmit() {
if (this.form.invalid)
return;
// this.oauthService.setStorage(this.form.value.remember ? localStorage : sessionStorage);
this.inProgress = true;
from(this.oauthService.fetchTokenUsingPasswordFlow(this.form.get('username').value, this.form.get('password').value))
.pipe(switchMap((/**
* @return {?}
*/
() => this.store.dispatch(new GetAppConfiguration()))), tap((/**
* @return {?}
*/
() => {
/** @type {?} */
const redirectUrl = snq((/**
* @return {?}
*/
() => window.history.state)).redirectUrl || (this.options || {}).redirectUrl || '/';
this.store.dispatch(new Navigate([redirectUrl]));
})), catchError((/**
* @param {?} err
* @return {?}
*/
err => {
this.toasterService.error(snq((/**
* @return {?}
*/
() => err.error.error_description)) ||
snq((/**
* @return {?}
*/
() => err.error.error.message), 'AbpAccount::DefaultErrorMessage'), 'Error', { life: 7000 });
return throwError(err);
})), finalize((/**
* @return {?}
*/
() => (this.inProgress = false))))
.subscribe();
}
}
LoginComponent.decorators = [
{ type: Component, args: [{
selector: 'abp-login',
template: "
\n
\n
\n\n
\n
{{ 'AbpAccount::Login' | abpLocalization }}
\n
\n
\n
\n
\n
\n"
}] }
];
/** @nocollapse */
LoginComponent.ctorParameters = () => [
{ type: FormBuilder },
{ type: OAuthService },
{ type: Store },
{ type: ToasterService },
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: ['ACCOUNT_OPTIONS',] }] }
];
if (false) {
/** @type {?} */
LoginComponent.prototype.form;
/** @type {?} */
LoginComponent.prototype.inProgress;
/**
* @type {?}
* @private
*/
LoginComponent.prototype.fb;
/**
* @type {?}
* @private
*/
LoginComponent.prototype.oauthService;
/**
* @type {?}
* @private
*/
LoginComponent.prototype.store;
/**
* @type {?}
* @private
*/
LoginComponent.prototype.toasterService;
/**
* @type {?}
* @private
*/
LoginComponent.prototype.options;
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class AccountService {
/**
* @param {?} rest
*/
constructor(rest) {
this.rest = rest;
}
/**
* @param {?} tenantName
* @return {?}
*/
findTenant(tenantName) {
/** @type {?} */
const request = {
method: 'GET',
url: `/api/abp/multi-tenancy/tenants/by-name/${tenantName}`,
};
return this.rest.request(request);
}
/**
* @param {?} body
* @return {?}
*/
register(body) {
/** @type {?} */
const request = {
method: 'POST',
url: '/api/account/register',
body,
};
return this.rest.request(request, { skipHandleError: true });
}
}
AccountService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root',
},] }
];
/** @nocollapse */
AccountService.ctorParameters = () => [
{ type: RestService }
];
/** @nocollapse */ AccountService.ngInjectableDef = ɵɵdefineInjectable({ factory: function AccountService_Factory() { return new AccountService(ɵɵinject(RestService)); }, token: AccountService, providedIn: "root" });
if (false) {
/**
* @type {?}
* @private
*/
AccountService.prototype.rest;
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
const { maxLength: maxLength$1, minLength: minLength$1, required: required$1, email } = Validators;
class RegisterComponent {
/**
* @param {?} fb
* @param {?} accountService
* @param {?} oauthService
* @param {?} store
* @param {?} toasterService
*/
constructor(fb, accountService, oauthService, store, toasterService) {
this.fb = fb;
this.accountService = accountService;
this.oauthService = oauthService;
this.store = store;
this.toasterService = toasterService;
this.oauthService.configure(this.store.selectSnapshot(ConfigState.getOne('environment')).oAuthConfig);
this.oauthService.loadDiscoveryDocument();
this.form = this.fb.group({
username: ['', [required$1, maxLength$1(255)]],
password: ['', [required$1, maxLength$1(32)]],
email: ['', [required$1, email]],
});
}
/**
* @return {?}
*/
onSubmit() {
if (this.form.invalid)
return;
this.inProgress = true;
/** @type {?} */
const newUser = (/** @type {?} */ ({
userName: this.form.get('username').value,
password: this.form.get('password').value,
emailAddress: this.form.get('email').value,
appName: 'Angular',
}));
this.accountService
.register(newUser)
.pipe(switchMap((/**
* @return {?}
*/
() => from(this.oauthService.fetchTokenUsingPasswordFlow(newUser.userName, newUser.password)))), switchMap((/**
* @return {?}
*/
() => this.store.dispatch(new GetAppConfiguration()))), tap((/**
* @return {?}
*/
() => this.store.dispatch(new Navigate(['/'])))), take(1), catchError((/**
* @param {?} err
* @return {?}
*/
err => {
this.toasterService.error(snq((/**
* @return {?}
*/
() => err.error.error_description)) ||
snq((/**
* @return {?}
*/
() => err.error.error.message), 'AbpAccount::DefaultErrorMessage'), 'Error', { life: 7000 });
return throwError(err);
})), finalize((/**
* @return {?}
*/
() => (this.inProgress = false))))
.subscribe();
}
}
RegisterComponent.decorators = [
{ type: Component, args: [{
selector: 'abp-register',
template: "\n
\n
\n\n
\n
{{ 'AbpAccount::Register' | abpLocalization }}
\n
\n
\n
\n
\n
\n"
}] }
];
/** @nocollapse */
RegisterComponent.ctorParameters = () => [
{ type: FormBuilder },
{ type: AccountService },
{ type: OAuthService },
{ type: Store },
{ type: ToasterService }
];
if (false) {
/** @type {?} */
RegisterComponent.prototype.form;
/** @type {?} */
RegisterComponent.prototype.inProgress;
/**
* @type {?}
* @private
*/
RegisterComponent.prototype.fb;
/**
* @type {?}
* @private
*/
RegisterComponent.prototype.accountService;
/**
* @type {?}
* @private
*/
RegisterComponent.prototype.oauthService;
/**
* @type {?}
* @private
*/
RegisterComponent.prototype.store;
/**
* @type {?}
* @private
*/
RegisterComponent.prototype.toasterService;
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
const routes = [
{ path: '', pathMatch: 'full', redirectTo: 'login' },
{
path: '',
component: DynamicLayoutComponent,
children: [{ path: 'login', component: LoginComponent }, { path: 'register', component: RegisterComponent }],
},
];
class AccountRoutingModule {
}
AccountRoutingModule.decorators = [
{ type: NgModule, args: [{
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
},] }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class TenantBoxComponent {
/**
* @param {?} store
* @param {?} toasterService
* @param {?} accountService
*/
constructor(store, toasterService, accountService) {
this.store = store;
this.toasterService = toasterService;
this.accountService = accountService;
this.tenant = (/** @type {?} */ ({}));
}
/**
* @return {?}
*/
ngOnInit() {
this.tenant =
this.store.selectSnapshot(SessionState.getTenant) ||
((/** @type {?} */ ({})));
this.tenantName = this.tenant.name || '';
}
/**
* @return {?}
*/
onSwitch() {
this.isModalVisible = true;
}
/**
* @return {?}
*/
save() {
if (this.tenant.name) {
this.accountService
.findTenant(this.tenant.name)
.pipe(take(1), catchError((/**
* @param {?} err
* @return {?}
*/
err => {
this.toasterService.error(snq((/**
* @return {?}
*/
() => err.error.error_description), 'AbpUi::DefaultErrorMessage'), 'AbpUi::Error');
return throwError(err);
})))
.subscribe((/**
* @param {?} __0
* @return {?}
*/
({ success, tenantId }) => {
if (success) {
this.tenant = {
id: tenantId,
name: this.tenant.name
};
this.tenantName = this.tenant.name;
this.isModalVisible = false;
}
else {
this.toasterService.error('AbpUiMultiTenancy::GivenTenantIsNotAvailable', 'AbpUi::Error', {
messageLocalizationParams: [this.tenant.name]
});
this.tenant = (/** @type {?} */ ({}));
}
this.store.dispatch(new SetTenant(success ? this.tenant : null));
}));
}
else {
this.store.dispatch(new SetTenant(null));
this.tenantName = null;
this.isModalVisible = false;
}
}
}
TenantBoxComponent.decorators = [
{ type: Component, args: [{
selector: 'abp-tenant-box',
template: "\n\n\n \n Switch Tenant
\n \n \n \n \n \n \n \n \n\n"
}] }
];
/** @nocollapse */
TenantBoxComponent.ctorParameters = () => [
{ type: Store },
{ type: ToasterService },
{ type: AccountService }
];
if (false) {
/** @type {?} */
TenantBoxComponent.prototype.tenant;
/** @type {?} */
TenantBoxComponent.prototype.tenantName;
/** @type {?} */
TenantBoxComponent.prototype.isModalVisible;
/**
* @type {?}
* @private
*/
TenantBoxComponent.prototype.store;
/**
* @type {?}
* @private
*/
TenantBoxComponent.prototype.toasterService;
/**
* @type {?}
* @private
*/
TenantBoxComponent.prototype.accountService;
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @param {?} options
* @return {?}
*/
function optionsFactory(options) {
return Object.assign({ redirectUrl: '/' }, options);
}
/** @type {?} */
const ACCOUNT_OPTIONS = new InjectionToken('ACCOUNT_OPTIONS');
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class AccountModule {
}
AccountModule.decorators = [
{ type: NgModule, args: [{
declarations: [LoginComponent, RegisterComponent, TenantBoxComponent],
imports: [CoreModule, AccountRoutingModule, ThemeSharedModule, TableModule, NgbDropdownModule, NgxValidateCoreModule],
exports: [],
},] }
];
/**
*
* @deprecated since version 0.9
* @param {?=} options
* @return {?}
*/
function AccountProviders(options = (/** @type {?} */ ({}))) {
return [
{ provide: ACCOUNT_OPTIONS, useValue: options },
{
provide: 'ACCOUNT_OPTIONS',
useFactory: optionsFactory,
deps: [ACCOUNT_OPTIONS],
},
];
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
*
* @deprecated since version 0.9
* @type {?}
*/
const ACCOUNT_ROUTES = {
routes: (/** @type {?} */ ([
{
name: 'Account',
path: 'account',
invisible: true,
layout: "application" /* application */,
children: [{ path: 'login', name: 'Login', order: 1 }, { path: 'register', name: 'Register', order: 2 }],
},
])),
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @record
*/
function Options() { }
if (false) {
/** @type {?|undefined} */
Options.prototype.redirectUrl;
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @record
*/
function RegisterRequest() { }
if (false) {
/** @type {?} */
RegisterRequest.prototype.userName;
/** @type {?} */
RegisterRequest.prototype.emailAddress;
/** @type {?} */
RegisterRequest.prototype.password;
/** @type {?|undefined} */
RegisterRequest.prototype.appName;
}
/**
* @record
*/
function RegisterResponse() { }
if (false) {
/** @type {?} */
RegisterResponse.prototype.tenantId;
/** @type {?} */
RegisterResponse.prototype.userName;
/** @type {?} */
RegisterResponse.prototype.name;
/** @type {?} */
RegisterResponse.prototype.surname;
/** @type {?} */
RegisterResponse.prototype.email;
/** @type {?} */
RegisterResponse.prototype.emailConfirmed;
/** @type {?} */
RegisterResponse.prototype.phoneNumber;
/** @type {?} */
RegisterResponse.prototype.phoneNumberConfirmed;
/** @type {?} */
RegisterResponse.prototype.twoFactorEnabled;
/** @type {?} */
RegisterResponse.prototype.lockoutEnabled;
/** @type {?} */
RegisterResponse.prototype.lockoutEnd;
/** @type {?} */
RegisterResponse.prototype.concurrencyStamp;
/** @type {?} */
RegisterResponse.prototype.isDeleted;
/** @type {?} */
RegisterResponse.prototype.deleterId;
/** @type {?} */
RegisterResponse.prototype.deletionTime;
/** @type {?} */
RegisterResponse.prototype.lastModificationTime;
/** @type {?} */
RegisterResponse.prototype.lastModifierId;
/** @type {?} */
RegisterResponse.prototype.creationTime;
/** @type {?} */
RegisterResponse.prototype.creatorId;
/** @type {?} */
RegisterResponse.prototype.id;
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @record
*/
function TenantIdResponse() { }
if (false) {
/** @type {?} */
TenantIdResponse.prototype.success;
/** @type {?} */
TenantIdResponse.prototype.tenantId;
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { ACCOUNT_OPTIONS, ACCOUNT_ROUTES, AccountModule, AccountProviders, LoginComponent, RegisterComponent, optionsFactory, LoginComponent as ɵa, RegisterComponent as ɵc, AccountService as ɵd, TenantBoxComponent as ɵe, AccountRoutingModule as ɵf, optionsFactory as ɵg, ACCOUNT_OPTIONS as ɵh };
//# sourceMappingURL=abp-ng.account.js.map