import { TokenInfo } from '@karmed/api/lib/model/TokenInfo'; import { ModulInfo } from '@karmed/api/lib/model/ModulInfo'; import { Culture } from '@karmed/api/lib/model/Culture'; import { MessageService, CoreService } from '@karmed/core'; import { ConfirmDialogComponent } from './../confirm-dialog/confirm-dialog.component'; import { Component, OnInit, ViewEncapsulation, ViewChild } from '@angular/core'; import { Router, ActivatedRoute } from '@angular/router'; import { InstitutionDialogComponent } from '../institution-dialog/institution-dialog.component'; import { MatDialog } from '@angular/material'; import { FormGroup, FormBuilder, Validators } from '@angular/forms'; import { TranslateService } from '@karmed/translate'; import { TranslatePipe } from '@karmed/translate/' import { finalize } from 'rxjs/operators'; import { ReCaptcha2Component } from 'ngx-captcha'; import { LoginService } from "@karmed/api"; import { KurumInfo } from '../../models/KurumInfo'; @Component({ selector: 'app-login', templateUrl: './login.component.html', styleUrls: ['./login.component.css'], encapsulation: ViewEncapsulation.None }) export class LoginComponent implements OnInit { constructor(private route: ActivatedRoute, private router: Router, private loginService: LoginService, private message: MessageService, private core: CoreService, public dialog: MatDialog, public translate: TranslateService, private formBuilder: FormBuilder) { translate.setDefaultLang(localStorage.culture || 'tr-TR'); } returnUrl: string; public kurumInfo: KurumInfo[]; public cultures: Culture[]; hide = true; culture = localStorage.culture || "tr-TR"; rememberMe: boolean = true; theme: string; @ViewChild("captcha", { static: false }) captcha: ReCaptcha2Component; form: FormGroup; TranslatePipe: TranslatePipe; siteKey: string;//= "6Lc2FrAUAAAAAFzm9VT3hf5e4MPHcDklyPLxeG-n"; token: any; modulInfo: ModulInfo; ngOnInit() { this.changeTheme(localStorage.theme || "blue"); this.form = this.formBuilder.group({ recaptcha: ['', Validators.required], username: [localStorage.username || '', Validators.required], password: "", culture: this.culture, sabitKurumId: "" }); this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || "/karmed"; this.fillCulture(); this.config(); } onSubmit() { if (!this.form.valid) return; var data = this.form.value; if (this.rememberMe) localStorage.username = data.username; else localStorage.username = ""; this.loginService.login(data.username, data.password, data.sabitKurumId, data.culture, this.modulInfo) .subscribe(data => { if (data) { if (data.access_token) { this.redirect(data); return; } if (data.kurum_info && data.kurum_info.length > 0) { this.kurumInfo = JSON.parse(data.kurum_info); this.openInstitution(); } } }, err => { var msg = ""; if (err.error == "error") msg = this.translate.get("Serviste Hata Oluştu. Sistem Yöneticisine Başvurunuz ve Konsol Hatalarını İnceleyiniz."); else msg = err.error.error_description; this.message.snackBar(msg); }); } redirect(token: TokenInfo) { localStorage.setItem('access_token', token.access_token); localStorage.setItem('user', token.user); this.router.navigate([this.returnUrl]); } private fillCulture() { this.loginService.culture() .pipe(finalize(() => { console.log("Culture Finalize") })) .subscribe(data => { if (data.Islem) { this.cultures = data.CultureListesi; } }); } openInstitution(): void { const dialogRef = this.dialog.open(InstitutionDialogComponent, { data: this.kurumInfo }); dialogRef.afterClosed().subscribe(result => { if (result) { this.form.value.sabitKurumId = result; this.onSubmit(); } }); } onCultureChange(data): void { localStorage.setItem("culture", data); this.culture = data; this.translate.set(data); } passwordReset(username: string, tckimlikno: string): void { if (!username || !tckimlikno) { this.message.snackBar(this.translate.get("Kullanıcı Adı veya TcKimlikNo Boş Olamaz")); return; } const dialogRef = this.dialog.open(ConfirmDialogComponent, { data: { title: this.translate.get("Uyarı"), text: this.translate.get("SifreSifirlamaOnay") } }); dialogRef.afterClosed().subscribe(result => { if (result) { this.loginService.pwdReset(username, tckimlikno) .subscribe(data => { var msg = data.Islem ? data.Aciklama : data.HataMesaji; this.message.snackBar(msg); }); } }); } config() { var lNames = ["WEB_LOGIN_TUM_BAGLANTI_CAPTCHA", "WEB_LOGIN_CAPTCHA_APIKEY"] this.loginService.parameters(lNames) .subscribe(arr => { if (arr.WEB_LOGIN_CAPTCHA_APIKEY) this.siteKey = arr.WEB_LOGIN_CAPTCHA_APIKEY; else this.destroyReCaptcha(); }); } destroyReCaptcha() { this.form.removeControl("recaptcha"); } changeTheme(themeName: string) { localStorage.theme = themeName; this.theme = themeName; var link = document.getElementById('themeAsset'); link.href = this.core.getBaseUrl() + `assets/theme/${themeName}.css`; } }