100 lines
2.6 KiB
TypeScript
Raw Normal View History

2019-09-18 15:02:21 +09:00
import { Injectable } from '@angular/core';
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,
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-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-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,
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-15 22:49:35 +09:00
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 = {
settings: environment.productConfig.defaultSettings
};
}
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,
rememberMe,
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
);
this.sessionStorageService.remove('PERSON_LOGOUT');
2019-09-18 15:02:21 +09:00
}
2019-09-19 17:03:39 +09:00
logout() {
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);
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
}