bug fixed
This commit is contained in:
parent
1a052bf765
commit
bb2ce39e6b
|
@ -1,4 +1,5 @@
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
|
import { take } from 'rxjs/operators';
|
||||||
|
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import {
|
import {
|
||||||
|
@ -9,6 +10,12 @@ import {
|
||||||
Router
|
Router
|
||||||
} from '@angular/router';
|
} from '@angular/router';
|
||||||
|
|
||||||
|
import { Store } from '@ngrx/store';
|
||||||
|
|
||||||
|
import { PiService } from '@ucap/ng-pi';
|
||||||
|
|
||||||
|
import { LoginActions } from '@ucap/ng-store-authentication';
|
||||||
|
|
||||||
import { AppAuthenticationService } from '@app/services/app-authentication.service';
|
import { AppAuthenticationService } from '@app/services/app-authentication.service';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
|
@ -16,7 +23,9 @@ import { AppAuthenticationService } from '@app/services/app-authentication.servi
|
||||||
})
|
})
|
||||||
export class AppAuthenticationGuard implements CanActivate {
|
export class AppAuthenticationGuard implements CanActivate {
|
||||||
constructor(
|
constructor(
|
||||||
|
private piService: PiService,
|
||||||
private appAuthenticationService: AppAuthenticationService,
|
private appAuthenticationService: AppAuthenticationService,
|
||||||
|
private store: Store<any>,
|
||||||
private router: Router
|
private router: Router
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
|
@ -32,8 +41,55 @@ export class AppAuthenticationGuard implements CanActivate {
|
||||||
if (this.appAuthenticationService.loggedIn()) {
|
if (this.appAuthenticationService.loggedIn()) {
|
||||||
resolve(true);
|
resolve(true);
|
||||||
} else {
|
} else {
|
||||||
this.router.navigateByUrl('/account/login');
|
const userStore = this.appAuthenticationService.useAutoLogin();
|
||||||
resolve(false);
|
if (!!userStore) {
|
||||||
|
const loginSession = this.appAuthenticationService.loginSession;
|
||||||
|
|
||||||
|
const onWebLoginFailure = (error: any) => {
|
||||||
|
userStore.settings.general.autoLogin = false;
|
||||||
|
this.appAuthenticationService.userStore = userStore;
|
||||||
|
|
||||||
|
this.router.navigateByUrl('/account/login');
|
||||||
|
resolve(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.piService
|
||||||
|
.login2({
|
||||||
|
companyCode: userStore.companyCode,
|
||||||
|
loginId: userStore.loginId,
|
||||||
|
loginPw: userStore.loginPw,
|
||||||
|
deviceType: loginSession.deviceType
|
||||||
|
})
|
||||||
|
.pipe(take(1))
|
||||||
|
.subscribe(
|
||||||
|
(res) => {
|
||||||
|
if ('success' !== res.status.toLowerCase()) {
|
||||||
|
onWebLoginFailure(res.status);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
this.store.dispatch(
|
||||||
|
LoginActions.webLoginSuccess({
|
||||||
|
companyCode: userStore.companyCode,
|
||||||
|
loginId: userStore.loginId,
|
||||||
|
loginPw: userStore.loginPw,
|
||||||
|
autoLogin: true,
|
||||||
|
rememberMe: userStore.rememberMe,
|
||||||
|
login2Response: res
|
||||||
|
})
|
||||||
|
);
|
||||||
|
resolve(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
onWebLoginFailure(error);
|
||||||
|
},
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
this.router.navigateByUrl('/account/login');
|
||||||
|
resolve(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,8 +14,8 @@ import { StatusCode } from '@ucap/api';
|
||||||
import { NativeService } from '@ucap/native';
|
import { NativeService } from '@ucap/native';
|
||||||
import { SSOMode } from '@ucap/protocol-authentication';
|
import { SSOMode } from '@ucap/protocol-authentication';
|
||||||
|
|
||||||
|
import { LogService } from '@ucap/ng-logger';
|
||||||
import { UCAP_NATIVE_SERVICE } from '@ucap/ng-native';
|
import { UCAP_NATIVE_SERVICE } from '@ucap/ng-native';
|
||||||
import { SessionStorageService } from '@ucap/ng-web-storage';
|
|
||||||
import { PublicApiService } from '@ucap/ng-api-public';
|
import { PublicApiService } from '@ucap/ng-api-public';
|
||||||
import { ExternalApiService } from '@ucap/ng-api-external';
|
import { ExternalApiService } from '@ucap/ng-api-external';
|
||||||
import { ProtocolService } from '@ucap/ng-protocol';
|
import { ProtocolService } from '@ucap/ng-protocol';
|
||||||
|
@ -28,11 +28,7 @@ import {
|
||||||
LoginActions
|
LoginActions
|
||||||
} from '@ucap/ng-store-authentication';
|
} from '@ucap/ng-store-authentication';
|
||||||
|
|
||||||
import { LoginSession } from '@app/models/login-session';
|
import { AppAuthenticationService } from '@app/services/app-authentication.service';
|
||||||
import { AppKey } from '@app/types/app-key.type';
|
|
||||||
|
|
||||||
import { AppActions } from '@app/store/actions';
|
|
||||||
import { LogService } from '@ucap/ng-logger';
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AppAuthenticationResolver implements Resolve<void> {
|
export class AppAuthenticationResolver implements Resolve<void> {
|
||||||
|
@ -43,7 +39,7 @@ export class AppAuthenticationResolver implements Resolve<void> {
|
||||||
private innerProtocolService: InnerProtocolService,
|
private innerProtocolService: InnerProtocolService,
|
||||||
private authenticationProtocolService: AuthenticationProtocolService,
|
private authenticationProtocolService: AuthenticationProtocolService,
|
||||||
private store: Store<any>,
|
private store: Store<any>,
|
||||||
private sessionStorageService: SessionStorageService,
|
private appAuthenticationService: AppAuthenticationService,
|
||||||
private logService: LogService,
|
private logService: LogService,
|
||||||
@Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService
|
@Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService
|
||||||
) {}
|
) {}
|
||||||
|
@ -54,9 +50,7 @@ export class AppAuthenticationResolver implements Resolve<void> {
|
||||||
): void | Observable<void> | Promise<void> {
|
): void | Observable<void> | Promise<void> {
|
||||||
return new Promise<void>(async (resolve, reject) => {
|
return new Promise<void>(async (resolve, reject) => {
|
||||||
try {
|
try {
|
||||||
const loginSession = this.sessionStorageService.get<LoginSession>(
|
const loginSession = this.appAuthenticationService.loginSession;
|
||||||
AppKey.LoginSession
|
|
||||||
);
|
|
||||||
const networkInfo = await this.nativeService.getNetworkInfo();
|
const networkInfo = await this.nativeService.getNetworkInfo();
|
||||||
const localIp =
|
const localIp =
|
||||||
!!networkInfo && 0 < networkInfo.length && !!networkInfo[0].ip
|
!!networkInfo && 0 < networkInfo.length && !!networkInfo[0].ip
|
||||||
|
@ -139,7 +133,7 @@ export class AppAuthenticationResolver implements Resolve<void> {
|
||||||
concatMap(() => {
|
concatMap(() => {
|
||||||
return this.innerProtocolService.conn({}).pipe(
|
return this.innerProtocolService.conn({}).pipe(
|
||||||
take(1),
|
take(1),
|
||||||
concatMap(connRes => {
|
concatMap((connRes) => {
|
||||||
return this.authenticationProtocolService
|
return this.authenticationProtocolService
|
||||||
.login({
|
.login({
|
||||||
loginId: loginSession.loginId,
|
loginId: loginSession.loginId,
|
||||||
|
@ -166,7 +160,7 @@ export class AppAuthenticationResolver implements Resolve<void> {
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
.subscribe(
|
.subscribe(
|
||||||
loginRes => {
|
(loginRes) => {
|
||||||
this.store.dispatch(
|
this.store.dispatch(
|
||||||
LoginActions.loginSuccess({
|
LoginActions.loginSuccess({
|
||||||
res: loginRes,
|
res: loginRes,
|
||||||
|
@ -175,12 +169,12 @@ export class AppAuthenticationResolver implements Resolve<void> {
|
||||||
);
|
);
|
||||||
resolve();
|
resolve();
|
||||||
},
|
},
|
||||||
error => {
|
(error) => {
|
||||||
reject(error);
|
reject(error);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
error => {
|
(error) => {
|
||||||
reject(error);
|
reject(error);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import { Subscription } from 'rxjs';
|
import { Subscription } from 'rxjs';
|
||||||
|
import { take, filter } from 'rxjs/operators';
|
||||||
|
|
||||||
import { Component, OnInit, OnDestroy, Input, ViewChild } from '@angular/core';
|
import { Component, OnInit, OnDestroy, Input, ViewChild } from '@angular/core';
|
||||||
|
|
||||||
|
@ -20,7 +21,7 @@ import { LoginActions } from '@ucap/ng-store-authentication';
|
||||||
import { UserStore } from '@app/models/user-store';
|
import { UserStore } from '@app/models/user-store';
|
||||||
import { LoginSession } from '@app/models/login-session';
|
import { LoginSession } from '@app/models/login-session';
|
||||||
import { AppKey } from '@app/types/app-key.type';
|
import { AppKey } from '@app/types/app-key.type';
|
||||||
import { take, filter } from 'rxjs/operators';
|
import { AppAuthenticationService } from '@app/services/app-authentication.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-sections-account-login',
|
selector: 'app-sections-account-login',
|
||||||
|
@ -64,13 +65,12 @@ export class LoginSectionComponent implements OnInit, OnDestroy {
|
||||||
private sessionStorageService: SessionStorageService,
|
private sessionStorageService: SessionStorageService,
|
||||||
private i18nService: I18nService,
|
private i18nService: I18nService,
|
||||||
private store: Store<any>,
|
private store: Store<any>,
|
||||||
|
private appAuthenticationService: AppAuthenticationService,
|
||||||
private logService: LogService
|
private logService: LogService
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
this.loginSession = this.sessionStorageService.get<LoginSession>(
|
this.loginSession = this.appAuthenticationService.loginSession;
|
||||||
AppKey.LoginSession
|
|
||||||
);
|
|
||||||
|
|
||||||
this.loginTry = this.sessionStorageService.get<LoginTry>(AppKey.LoginTry);
|
this.loginTry = this.sessionStorageService.get<LoginTry>(AppKey.LoginTry);
|
||||||
|
|
||||||
|
@ -84,13 +84,13 @@ export class LoginSectionComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
this.companyListSubscription = this.store
|
this.companyListSubscription = this.store
|
||||||
.pipe(select(CompanySelector.companyList))
|
.pipe(select(CompanySelector.companyList))
|
||||||
.subscribe(companyList => {
|
.subscribe((companyList) => {
|
||||||
this.companyList = companyList;
|
this.companyList = companyList;
|
||||||
});
|
});
|
||||||
|
|
||||||
this.loginTrySubscription = this.sessionStorageService.changed$
|
this.loginTrySubscription = this.sessionStorageService.changed$
|
||||||
.pipe(filter(param => AppKey.LoginTry === param.key))
|
.pipe(filter((param) => AppKey.LoginTry === param.key))
|
||||||
.subscribe(param => {
|
.subscribe((param) => {
|
||||||
this.loginTry = param.value as LoginTry;
|
this.loginTry = param.value as LoginTry;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -125,7 +125,7 @@ export class LoginSectionComponent implements OnInit, OnDestroy {
|
||||||
})
|
})
|
||||||
.pipe(take(1))
|
.pipe(take(1))
|
||||||
.subscribe(
|
.subscribe(
|
||||||
res => {
|
(res) => {
|
||||||
if ('success' !== res.status.toLowerCase()) {
|
if ('success' !== res.status.toLowerCase()) {
|
||||||
this.onWebLoginFailure(event, res.status);
|
this.onWebLoginFailure(event, res.status);
|
||||||
return;
|
return;
|
||||||
|
@ -143,7 +143,7 @@ export class LoginSectionComponent implements OnInit, OnDestroy {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error => {
|
(error) => {
|
||||||
this.onWebLoginFailure(event, error);
|
this.onWebLoginFailure(event, error);
|
||||||
},
|
},
|
||||||
() => {
|
() => {
|
||||||
|
|
|
@ -29,21 +29,65 @@ export class AppAuthenticationService {
|
||||||
@Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService
|
@Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
loggedIn(): boolean {
|
get userStore(): UserStore {
|
||||||
|
const userStore = this.localStorageService.encGet<UserStore>(
|
||||||
|
AppKey.UserStore,
|
||||||
|
environment.productConfig.localEncriptionKey
|
||||||
|
);
|
||||||
|
|
||||||
|
return userStore;
|
||||||
|
}
|
||||||
|
|
||||||
|
set userStore(userStore: UserStore) {
|
||||||
|
const oldUserStore = this.userStore;
|
||||||
|
this.localStorageService.encSet<UserStore>(
|
||||||
|
AppKey.UserStore,
|
||||||
|
{
|
||||||
|
...oldUserStore,
|
||||||
|
...userStore
|
||||||
|
},
|
||||||
|
environment.productConfig.localEncriptionKey
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
get loginSession(): LoginSession {
|
||||||
const loginSession = this.sessionStorageService.get<LoginSession>(
|
const loginSession = this.sessionStorageService.get<LoginSession>(
|
||||||
AppKey.LoginSession
|
AppKey.LoginSession
|
||||||
);
|
);
|
||||||
|
|
||||||
|
return loginSession;
|
||||||
|
}
|
||||||
|
|
||||||
|
set loginSession(loginSession: LoginSession) {
|
||||||
|
const oldLoginSession = this.loginSession;
|
||||||
|
this.sessionStorageService.set<LoginSession>(AppKey.LoginSession, {
|
||||||
|
...oldLoginSession,
|
||||||
|
...loginSession
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
loggedIn(): boolean {
|
||||||
|
const loginSession = this.loginSession;
|
||||||
return !!loginSession && !!loginSession.loginId;
|
return !!loginSession && !!loginSession.loginId;
|
||||||
}
|
}
|
||||||
|
|
||||||
async login(
|
useAutoLogin(): UserStore | null {
|
||||||
|
const userStore = this.userStore;
|
||||||
|
|
||||||
|
return !!userStore &&
|
||||||
|
!!userStore.settings &&
|
||||||
|
!!userStore.settings.general &&
|
||||||
|
userStore.settings.general.autoLogin
|
||||||
|
? userStore
|
||||||
|
: null;
|
||||||
|
}
|
||||||
|
|
||||||
|
async postWebLogin(
|
||||||
loginSession: LoginSession,
|
loginSession: LoginSession,
|
||||||
rememberMe: boolean,
|
rememberMe: boolean,
|
||||||
autoLogin: boolean
|
autoLogin: boolean
|
||||||
) {
|
) {
|
||||||
const prevLoginSession = this.sessionStorageService.get<LoginSession>(
|
const prevLoginSession = this.loginSession;
|
||||||
AppKey.LoginSession
|
|
||||||
);
|
|
||||||
|
|
||||||
loginSession = {
|
loginSession = {
|
||||||
...prevLoginSession,
|
...prevLoginSession,
|
||||||
|
@ -52,16 +96,13 @@ export class AppAuthenticationService {
|
||||||
};
|
};
|
||||||
const encLoginPw = PasswordUtil.encrypt(loginSession.loginPw);
|
const encLoginPw = PasswordUtil.encrypt(loginSession.loginPw);
|
||||||
|
|
||||||
this.sessionStorageService.set<LoginSession>(AppKey.LoginSession, {
|
this.loginSession = {
|
||||||
...loginSession,
|
...loginSession,
|
||||||
initPw: loginSession.loginId === loginSession.loginPw,
|
initPw: loginSession.loginId === loginSession.loginPw,
|
||||||
loginPw: encLoginPw
|
loginPw: encLoginPw
|
||||||
});
|
};
|
||||||
|
|
||||||
let userStore = this.localStorageService.encGet<UserStore>(
|
let userStore = this.userStore;
|
||||||
AppKey.UserStore,
|
|
||||||
environment.productConfig.localEncriptionKey
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!userStore) {
|
if (!userStore) {
|
||||||
userStore = {
|
userStore = {
|
||||||
|
@ -101,11 +142,7 @@ export class AppAuthenticationService {
|
||||||
userStore.settings.general.autoLogin = autoLogin;
|
userStore.settings.general.autoLogin = autoLogin;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.localStorageService.encSet<UserStore>(
|
this.userStore = userStore;
|
||||||
AppKey.UserStore,
|
|
||||||
userStore,
|
|
||||||
environment.productConfig.localEncriptionKey
|
|
||||||
);
|
|
||||||
|
|
||||||
this.sessionStorageService.remove(AppKey.LogoutSession);
|
this.sessionStorageService.remove(AppKey.LogoutSession);
|
||||||
}
|
}
|
||||||
|
@ -117,10 +154,7 @@ export class AppAuthenticationService {
|
||||||
this.sessionStorageService.remove(AppKey.UrlInfoResponse);
|
this.sessionStorageService.remove(AppKey.UrlInfoResponse);
|
||||||
this.sessionStorageService.remove(AppKey.AuthResponse);
|
this.sessionStorageService.remove(AppKey.AuthResponse);
|
||||||
|
|
||||||
let userStore = this.localStorageService.encGet<UserStore>(
|
let userStore = this.userStore;
|
||||||
AppKey.UserStore,
|
|
||||||
environment.productConfig.localEncriptionKey
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!!userStore) {
|
if (!!userStore) {
|
||||||
userStore = {
|
userStore = {
|
||||||
|
@ -134,11 +168,7 @@ export class AppAuthenticationService {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
this.localStorageService.encSet<UserStore>(
|
this.userStore = userStore;
|
||||||
AppKey.UserStore,
|
|
||||||
userStore,
|
|
||||||
environment.productConfig.localEncriptionKey
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,21 +11,20 @@ import { PingProtocolService } from '@ucap/ng-protocol-ping';
|
||||||
import { DateService } from '@ucap/ng-ui';
|
import { DateService } from '@ucap/ng-ui';
|
||||||
import { TranslateService } from '@ucap/ng-ui-organization';
|
import { TranslateService } from '@ucap/ng-ui-organization';
|
||||||
|
|
||||||
import { LoginSession } from '@app/models/login-session';
|
|
||||||
import { AppKey } from '@app/types/app-key.type';
|
|
||||||
|
|
||||||
import { environment } from '@environments';
|
import { environment } from '@environments';
|
||||||
|
|
||||||
|
import { AppAuthenticationService } from './app-authentication.service';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AppService {
|
export class AppService {
|
||||||
readonly companyGroupCode = environment.companyConfig.companyGroupCode;
|
readonly companyGroupCode = environment.companyConfig.companyGroupCode;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private sessionStorageService: SessionStorageService,
|
|
||||||
private i18nService: I18nService,
|
private i18nService: I18nService,
|
||||||
private translateService: TranslateService,
|
private translateService: TranslateService,
|
||||||
private dateService: DateService,
|
private dateService: DateService,
|
||||||
private pingProtocolService: PingProtocolService,
|
private pingProtocolService: PingProtocolService,
|
||||||
|
private appAuthenticationService: AppAuthenticationService,
|
||||||
private logService: LogService,
|
private logService: LogService,
|
||||||
@Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService
|
@Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService
|
||||||
) {}
|
) {}
|
||||||
|
@ -33,9 +32,7 @@ export class AppService {
|
||||||
initialize(): Promise<void[]> {
|
initialize(): Promise<void[]> {
|
||||||
const initSession = new Promise<void>(async (resolve, reject) => {
|
const initSession = new Promise<void>(async (resolve, reject) => {
|
||||||
try {
|
try {
|
||||||
let loginSession = this.sessionStorageService.get<LoginSession>(
|
let loginSession = this.appAuthenticationService.loginSession;
|
||||||
AppKey.LoginSession
|
|
||||||
);
|
|
||||||
|
|
||||||
loginSession = loginSession || {};
|
loginSession = loginSession || {};
|
||||||
|
|
||||||
|
@ -67,12 +64,12 @@ export class AppService {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.sessionStorageService.set<LoginSession>(AppKey.LoginSession, {
|
this.appAuthenticationService.loginSession = {
|
||||||
...loginSession,
|
...loginSession,
|
||||||
deviceType,
|
deviceType,
|
||||||
desktopType,
|
desktopType,
|
||||||
companyGroupCode: this.companyGroupCode
|
companyGroupCode: this.companyGroupCode
|
||||||
});
|
};
|
||||||
|
|
||||||
this.dateService.setDefaultTimezone('Asia/Seoul');
|
this.dateService.setDefaultTimezone('Asia/Seoul');
|
||||||
this.dateService.use('Asia/Seoul');
|
this.dateService.use('Asia/Seoul');
|
||||||
|
|
|
@ -31,9 +31,9 @@ export class Effects {
|
||||||
() =>
|
() =>
|
||||||
this.actions$.pipe(
|
this.actions$.pipe(
|
||||||
ofType(LoginActions.webLoginSuccess),
|
ofType(LoginActions.webLoginSuccess),
|
||||||
tap(params => {
|
tap((params) => {
|
||||||
this.nativeService.checkForUpdates(params.login2Response.version);
|
this.nativeService.checkForUpdates(params.login2Response.version);
|
||||||
this.appAuthenticationService.login(
|
this.appAuthenticationService.postWebLogin(
|
||||||
{
|
{
|
||||||
companyCode: params.companyCode,
|
companyCode: params.companyCode,
|
||||||
loginId: params.loginId,
|
loginId: params.loginId,
|
||||||
|
@ -52,7 +52,7 @@ export class Effects {
|
||||||
() =>
|
() =>
|
||||||
this.actions$.pipe(
|
this.actions$.pipe(
|
||||||
ofType(LoginActions.webLoginFailure),
|
ofType(LoginActions.webLoginFailure),
|
||||||
tap(params => {
|
tap((params) => {
|
||||||
let loginTry = this.sessionStorageService.get<LoginTry>(
|
let loginTry = this.sessionStorageService.get<LoginTry>(
|
||||||
AppKey.LoginTry
|
AppKey.LoginTry
|
||||||
);
|
);
|
||||||
|
@ -91,14 +91,14 @@ export class Effects {
|
||||||
interval(1000)
|
interval(1000)
|
||||||
.pipe(takeUntil(waitTimer$))
|
.pipe(takeUntil(waitTimer$))
|
||||||
.subscribe(
|
.subscribe(
|
||||||
v => {
|
(v) => {
|
||||||
loginTry.remainTimeForNextTry = this.intervalForRetry - v;
|
loginTry.remainTimeForNextTry = this.intervalForRetry - v;
|
||||||
this.sessionStorageService.set<LoginTry>(
|
this.sessionStorageService.set<LoginTry>(
|
||||||
AppKey.LoginTry,
|
AppKey.LoginTry,
|
||||||
loginTry
|
loginTry
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
error => {},
|
(error) => {},
|
||||||
() => {
|
() => {
|
||||||
loginTry = {
|
loginTry = {
|
||||||
failCount: 0,
|
failCount: 0,
|
||||||
|
|
54
tslint.json
54
tslint.json
|
@ -9,28 +9,12 @@
|
||||||
"component-class-suffix": true,
|
"component-class-suffix": true,
|
||||||
"contextual-lifecycle": true,
|
"contextual-lifecycle": true,
|
||||||
"directive-class-suffix": true,
|
"directive-class-suffix": true,
|
||||||
"directive-selector": [
|
"directive-selector": [true, "attribute", "app", "camelCase"],
|
||||||
true,
|
"component-selector": [true, "element", "app", "kebab-case"],
|
||||||
"attribute",
|
"import-blacklist": [true, "rxjs/Rx"],
|
||||||
"app",
|
|
||||||
"camelCase"
|
|
||||||
],
|
|
||||||
"component-selector": [
|
|
||||||
true,
|
|
||||||
"element",
|
|
||||||
"app",
|
|
||||||
"kebab-case"
|
|
||||||
],
|
|
||||||
"import-blacklist": [
|
|
||||||
true,
|
|
||||||
"rxjs/Rx"
|
|
||||||
],
|
|
||||||
"interface-name": false,
|
"interface-name": false,
|
||||||
"max-classes-per-file": false,
|
"max-classes-per-file": false,
|
||||||
"max-line-length": [
|
"max-line-length": [true, 140],
|
||||||
true,
|
|
||||||
140
|
|
||||||
],
|
|
||||||
"member-access": false,
|
"member-access": false,
|
||||||
"member-ordering": [
|
"member-ordering": [
|
||||||
true,
|
true,
|
||||||
|
@ -44,33 +28,17 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"no-consecutive-blank-lines": false,
|
"no-consecutive-blank-lines": false,
|
||||||
"no-console": [
|
"no-console": [true, "debug", "info", "time", "timeEnd", "trace"],
|
||||||
true,
|
|
||||||
"debug",
|
|
||||||
"info",
|
|
||||||
"time",
|
|
||||||
"timeEnd",
|
|
||||||
"trace"
|
|
||||||
],
|
|
||||||
"no-empty": false,
|
"no-empty": false,
|
||||||
"no-inferrable-types": [
|
"no-inferrable-types": [true, "ignore-params"],
|
||||||
true,
|
"no-non-null-assertion": false,
|
||||||
"ignore-params"
|
|
||||||
],
|
|
||||||
"no-non-null-assertion": true,
|
|
||||||
"no-redundant-jsdoc": true,
|
"no-redundant-jsdoc": true,
|
||||||
"no-switch-case-fall-through": true,
|
"no-switch-case-fall-through": true,
|
||||||
"no-var-requires": false,
|
"no-var-requires": false,
|
||||||
"object-literal-key-quotes": [
|
"object-literal-key-quotes": [true, "as-needed"],
|
||||||
true,
|
|
||||||
"as-needed"
|
|
||||||
],
|
|
||||||
"object-literal-sort-keys": false,
|
"object-literal-sort-keys": false,
|
||||||
"ordered-imports": false,
|
"ordered-imports": false,
|
||||||
"quotemark": [
|
"quotemark": [true, "single"],
|
||||||
true,
|
|
||||||
"single"
|
|
||||||
],
|
|
||||||
"trailing-comma": false,
|
"trailing-comma": false,
|
||||||
"no-conflicting-lifecycle": true,
|
"no-conflicting-lifecycle": true,
|
||||||
"no-host-metadata-property": true,
|
"no-host-metadata-property": true,
|
||||||
|
@ -85,7 +53,5 @@
|
||||||
"use-lifecycle-interface": true,
|
"use-lifecycle-interface": true,
|
||||||
"use-pipe-transform-interface": true
|
"use-pipe-transform-interface": true
|
||||||
},
|
},
|
||||||
"rulesDirectory": [
|
"rulesDirectory": ["codelyzer"]
|
||||||
"codelyzer"
|
|
||||||
]
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user