2019-12-24 11:41:50 +09:00
|
|
|
import { Injectable, Inject } from '@angular/core';
|
2019-09-18 15:02:21 +09:00
|
|
|
|
|
|
|
import {
|
|
|
|
SessionStorageService,
|
|
|
|
LocalStorageService
|
|
|
|
} from '@ucap-webmessenger/web-storage';
|
2019-09-27 12:53:21 +09:00
|
|
|
import { LocaleCode } from '@ucap-webmessenger/core';
|
2019-12-13 14:38:42 +09:00
|
|
|
import {
|
|
|
|
LoginInfo,
|
|
|
|
KEY_LOGIN_INFO,
|
|
|
|
KEY_LOGIN_RES_INFO,
|
2019-12-16 09:58:01 +09:00
|
|
|
KEY_VER_INFO,
|
|
|
|
KEY_URL_INFO
|
2019-12-13 14:38:42 +09:00
|
|
|
} from '../types';
|
2019-11-29 14:26:59 +09:00
|
|
|
import { PasswordUtil } from '@ucap-webmessenger/pi';
|
2019-12-17 15:13:25 +09:00
|
|
|
|
2019-12-15 18:07:25 +09:00
|
|
|
import { DaesangCipherService } from '@ucap-webmessenger/daesang';
|
2019-09-18 15:02:21 +09:00
|
|
|
|
2019-12-15 22:49:35 +09:00
|
|
|
import { environment } from '../../environments/environment';
|
|
|
|
import { AppUserInfo, KEY_APP_USER_INFO } from '@app/types/app-user-info.type';
|
2019-12-24 11:41:50 +09:00
|
|
|
import { Settings } from '@ucap-webmessenger/ui-settings';
|
|
|
|
import { NativeService, UCAP_NATIVE_SERVICE } from '@ucap-webmessenger/native';
|
2019-12-15 22:49:35 +09:00
|
|
|
|
2019-09-18 15:02:21 +09:00
|
|
|
@Injectable({
|
|
|
|
providedIn: 'root'
|
|
|
|
})
|
2019-09-19 18:22:13 +09:00
|
|
|
export class AppAuthenticationService {
|
2019-09-18 15:02:21 +09:00
|
|
|
showLoader = false;
|
|
|
|
|
|
|
|
constructor(
|
|
|
|
private sessionStorageService: SessionStorageService,
|
2019-12-15 18:07:25 +09:00
|
|
|
private localStorageService: LocalStorageService,
|
2019-12-24 11:41:50 +09:00
|
|
|
@Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService,
|
2019-12-15 18:07:25 +09:00
|
|
|
private daesangCipherService: DaesangCipherService
|
2019-09-18 15:02:21 +09:00
|
|
|
) {}
|
|
|
|
|
|
|
|
authenticated(): boolean {
|
|
|
|
const loginInfo = this.sessionStorageService.get<LoginInfo>(KEY_LOGIN_INFO);
|
|
|
|
return null !== loginInfo && !!loginInfo.loginId;
|
|
|
|
}
|
|
|
|
|
2019-12-24 11:41:50 +09:00
|
|
|
async login(loginInfo: LoginInfo, rememberMe: boolean, autoLogin: boolean) {
|
2019-09-24 14:53:22 +09:00
|
|
|
loginInfo = { ...loginInfo, localeCode: LocaleCode.Korean };
|
|
|
|
|
2019-12-15 22:49:35 +09:00
|
|
|
const encLoginPw = this.daesangCipherService.encrypt(
|
|
|
|
environment.customConfig.pw.userKey,
|
|
|
|
loginInfo.loginPw,
|
|
|
|
environment.customConfig.pw.isBase64
|
|
|
|
);
|
|
|
|
// PasswordUtil.encrypt(loginInfo.loginPw)
|
|
|
|
|
2019-09-18 15:02:21 +09:00
|
|
|
this.sessionStorageService.set<LoginInfo>(KEY_LOGIN_INFO, {
|
|
|
|
...loginInfo,
|
2019-11-28 15:48:36 +09:00
|
|
|
initPw: loginInfo.loginId === loginInfo.loginPw,
|
2019-12-15 22:49:35 +09:00
|
|
|
loginPw: encLoginPw
|
2019-09-18 15:02:21 +09:00
|
|
|
});
|
|
|
|
|
2019-12-16 04:49:27 +09:00
|
|
|
let appUserInfo = this.localStorageService.encGet<AppUserInfo>(
|
|
|
|
KEY_APP_USER_INFO,
|
|
|
|
environment.customConfig.appKey
|
|
|
|
);
|
|
|
|
|
|
|
|
if (!appUserInfo) {
|
|
|
|
appUserInfo = {
|
2019-12-24 11:41:50 +09:00
|
|
|
settings: {
|
|
|
|
...environment.productConfig.defaultSettings,
|
|
|
|
chat: {
|
|
|
|
...environment.productConfig.defaultSettings.chat,
|
2019-12-24 16:16:13 +09:00
|
|
|
downloadPath: `${await this.nativeService.getPath(
|
2019-12-24 11:41:50 +09:00
|
|
|
'documents'
|
2019-12-26 09:35:43 +09:00
|
|
|
)}/LG UCAP downloads`
|
2019-12-24 11:41:50 +09:00
|
|
|
}
|
|
|
|
}
|
2019-12-16 04:49:27 +09:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2019-12-17 08:55:06 +09:00
|
|
|
appUserInfo = {
|
|
|
|
...appUserInfo,
|
|
|
|
companyGroupType: loginInfo.companyGroupType,
|
|
|
|
companyCode: loginInfo.companyCode,
|
|
|
|
loginId: loginInfo.loginId,
|
|
|
|
loginPw: loginInfo.loginPw
|
|
|
|
};
|
|
|
|
|
2019-12-15 22:49:35 +09:00
|
|
|
if (rememberMe || autoLogin) {
|
2019-12-16 04:49:27 +09:00
|
|
|
appUserInfo = {
|
|
|
|
...appUserInfo,
|
2019-12-17 16:29:04 +09:00
|
|
|
rememberMe
|
2019-12-16 04:49:27 +09:00
|
|
|
};
|
2019-12-17 16:29:04 +09:00
|
|
|
appUserInfo.settings.general.autoLogin = autoLogin;
|
2019-09-18 15:02:21 +09:00
|
|
|
}
|
2019-12-16 04:49:27 +09:00
|
|
|
|
|
|
|
this.localStorageService.encSet<AppUserInfo>(
|
|
|
|
KEY_APP_USER_INFO,
|
|
|
|
appUserInfo,
|
|
|
|
environment.customConfig.appKey
|
|
|
|
);
|
2019-12-16 09:58:01 +09:00
|
|
|
|
|
|
|
this.sessionStorageService.remove('PERSON_LOGOUT');
|
2019-09-18 15:02:21 +09:00
|
|
|
}
|
|
|
|
|
2019-09-19 17:03:39 +09:00
|
|
|
logout() {
|
2019-11-25 10:47:44 +09:00
|
|
|
this.sessionStorageService.remove(KEY_LOGIN_RES_INFO);
|
|
|
|
this.sessionStorageService.remove(KEY_VER_INFO);
|
2019-09-19 17:03:39 +09:00
|
|
|
this.sessionStorageService.remove(KEY_LOGIN_INFO);
|
2019-12-16 09:58:01 +09:00
|
|
|
this.sessionStorageService.remove(KEY_URL_INFO);
|
|
|
|
|
|
|
|
this.sessionStorageService.set<boolean>('PERSON_LOGOUT', true);
|
2019-09-19 17:03:39 +09:00
|
|
|
}
|
2019-09-18 15:02:21 +09:00
|
|
|
}
|