import { AbpSessionService } from '@abp/session/abp-session.service'; import { Component, Injector, OnInit, ViewChild } from '@angular/core'; import { Router } from '@angular/router'; import { accountModuleAnimation } from '@shared/animations/routerTransition'; import { AppComponentBase } from '@shared/common/app-component-base'; import { SessionServiceProxy, UpdateUserSignInTokenOutput } from '@shared/service-proxies/service-proxies'; import { UrlHelper } from 'shared/helpers/UrlHelper'; import { ExternalLoginProvider, LoginService } from './login.service'; import { RecaptchaComponent } from 'ng-recaptcha'; import { AppConsts } from '@shared/AppConsts'; import { AppSessionService } from '@shared/common/session/app-session.service'; import { DomHelper } from '@shared/helpers/DomHelper'; import { LocalStorageService } from '@shared/utils/local-storage.service'; @Component({ templateUrl: './login.component.html', animations: [accountModuleAnimation()], styleUrls: ['./login.component.less'] }) export class LoginComponent extends AppComponentBase implements OnInit { @ViewChild('recaptchaRef', { static: false }) recaptchaRef: RecaptchaComponent; submitting = false; isMultiTenancyEnabled: boolean = this.multiTenancy.isEnabled; recaptchaSiteKey: string = AppConsts.recaptchaSiteKey; captchaResponse?: string; cssTrigger= false; constructor( injector: Injector, public loginService: LoginService, private _router: Router, private _sessionService: AbpSessionService, private _sessionAppService: SessionServiceProxy, private _localStorageService: LocalStorageService ) { super(injector); this.initializeTenantResources(injector); } get multiTenancySideIsTeanant(): boolean { return this._sessionService.tenantId > 0; } get isTenantSelfRegistrationAllowed(): boolean { return this.setting.getBoolean('App.TenantManagement.AllowSelfRegistration'); } get isSelfRegistrationAllowed(): boolean { if (!this._sessionService.tenantId) { return false; } return this.setting.getBoolean('App.UserManagement.AllowSelfRegistration'); } ngOnInit(): void { if (this._sessionService.userId > 0 && UrlHelper.getReturnUrl() && UrlHelper.getSingleSignIn()) { this._sessionAppService.updateUserSignInToken() .subscribe((result: UpdateUserSignInTokenOutput) => { const initialReturnUrl = UrlHelper.getReturnUrl(); const returnUrl = initialReturnUrl + (initialReturnUrl.indexOf('?') >= 0 ? '&' : '?') + 'accessToken=' + result.signInToken + '&userId=' + result.encodedUserId + '&tenantId=' + result.encodedTenantId; location.href = returnUrl; }); } let state = UrlHelper.getQueryParametersUsingHash().state; if (state && state.indexOf('openIdConnect') >= 0) { this.loginService.openIdConnectLoginCallback({}); } } login(): void { if (this.useCaptcha && !this.captchaResponse) { this.message.warn(this.l('CaptchaCanNotBeEmpty')); return; } this.spinnerService.show(); this.submitting = true; this.loginService.authenticate( () => { this.submitting = false; this.spinnerService.hide(); if (this.recaptchaRef) { this.recaptchaRef.reset(); } }, null, this.captchaResponse ); } externalLogin(provider: ExternalLoginProvider) { this.loginService.externalAuthenticate(provider); } get useCaptcha(): boolean { return this.setting.getBoolean('App.UserManagement.UseCaptchaOnLogin'); } captchaResolved(captchaResponse: string): void { this.captchaResponse = captchaResponse; } initializeTenantResources(injector: Injector) { let appSessionService: AppSessionService = injector.get(AppSessionService); // console.log(appSessionService.tenant) // console.log(appSessionService.tenant.customCssId) if (appSessionService.tenant && appSessionService.tenant.customCssId) { this.cssTrigger= true document.body.appendChild( DomHelper.createElement('link', [ { key: 'id', value: 'TenantCustomCss' }, { key: 'rel', value: 'stylesheet' }, { key: 'href', value: AppConsts.remoteServiceBaseUrl + '/TenantCustomization/GetCustomCss?tenantId=' + appSessionService.tenant.id }]) ); } else{ this.cssTrigger=false } } }