import { Injectable } from '@angular/core'; import { SessionStorageService, LocalStorageService } from '@ucap-webmessenger/web-storage'; import { LocaleCode } from '@ucap-webmessenger/core'; import { LoginInfo, KEY_LOGIN_INFO, KEY_LOGIN_RES_INFO, KEY_VER_INFO } from '../types'; import { PasswordUtil } from '@ucap-webmessenger/pi'; import { DaesangCipherService } from '@ucap-webmessenger/daesang'; @Injectable({ providedIn: 'root' }) export class AppAuthenticationService { showLoader = false; constructor( private sessionStorageService: SessionStorageService, private localStorageService: LocalStorageService, private daesangCipherService: DaesangCipherService ) {} authenticated(): boolean { const loginInfo = this.sessionStorageService.get(KEY_LOGIN_INFO); return null !== loginInfo && !!loginInfo.loginId; } login(loginInfo: LoginInfo, rememberMe: boolean) { loginInfo = { ...loginInfo, localeCode: LocaleCode.Korean }; this.sessionStorageService.set(KEY_LOGIN_INFO, { ...loginInfo, initPw: loginInfo.loginId === loginInfo.loginPw, // loginPw: PasswordUtil.encrypt(loginInfo.loginPw) loginPw: this.daesangCipherService.encrypt( 'DaesangSSOProject', loginInfo.loginPw, 'N' ) }); if (rememberMe) { this.localStorageService.set(KEY_LOGIN_INFO, { ...loginInfo, loginPw: undefined }); } else { this.localStorageService.remove(KEY_LOGIN_INFO); } } logout() { this.sessionStorageService.remove(KEY_LOGIN_RES_INFO); this.sessionStorageService.remove(KEY_VER_INFO); this.sessionStorageService.remove(KEY_LOGIN_INFO); } }