45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
|
import { Injectable } from '@angular/core';
|
||
|
|
||
|
import CryptoJS from 'crypto-js';
|
||
|
|
||
|
import {
|
||
|
SessionStorageService,
|
||
|
LocalStorageService
|
||
|
} from '@ucap-webmessenger/web-storage';
|
||
|
import { LoginInfo, KEY_LOGIN_INFO } from '../types';
|
||
|
|
||
|
@Injectable({
|
||
|
providedIn: 'root'
|
||
|
})
|
||
|
export class AuthenticationService {
|
||
|
showLoader = false;
|
||
|
|
||
|
constructor(
|
||
|
private sessionStorageService: SessionStorageService,
|
||
|
private localStorageService: LocalStorageService
|
||
|
) {}
|
||
|
|
||
|
authenticated(): boolean {
|
||
|
const loginInfo = this.sessionStorageService.get<LoginInfo>(KEY_LOGIN_INFO);
|
||
|
return null !== loginInfo && !!loginInfo.loginId;
|
||
|
}
|
||
|
|
||
|
login(loginInfo: LoginInfo, rememberMe: boolean) {
|
||
|
this.sessionStorageService.set<LoginInfo>(KEY_LOGIN_INFO, {
|
||
|
...loginInfo,
|
||
|
loginPw: CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(loginInfo.loginPw))
|
||
|
});
|
||
|
|
||
|
if (rememberMe) {
|
||
|
this.localStorageService.set<LoginInfo>(KEY_LOGIN_INFO, {
|
||
|
...loginInfo,
|
||
|
loginPw: undefined
|
||
|
});
|
||
|
} else {
|
||
|
this.localStorageService.remove(KEY_LOGIN_INFO);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
logout() {}
|
||
|
}
|