login test
This commit is contained in:
@@ -1,49 +1,69 @@
|
||||
import { LoginParams } from '@/entities/user/model/types';
|
||||
import { LoginParams, LoginResponse } from '@/entities/user/model/types';
|
||||
import { StorageKeys } from '@/shared/constants/local-storage';
|
||||
import { setLocalStorage } from '@/shared/lib/web-view-bridge';
|
||||
import { useLoginMutation } from '@/entities/user/api/use-login-mutation';
|
||||
import { useStore } from '~/shared/model/store';
|
||||
import { useAppBridge } from '@/hooks';
|
||||
|
||||
export const useUserInfo = () => {
|
||||
const { mutateAsync: login } = useLoginMutation();
|
||||
const callLogin = async (params: LoginParams) => {
|
||||
const {
|
||||
isNativeEnvironment,
|
||||
requestToken,
|
||||
logout
|
||||
} = useAppBridge();
|
||||
const callLogin = async (params?: LoginParams) => {
|
||||
try{
|
||||
useStore.getState().UserStore.resetUserInfo();
|
||||
|
||||
const result = await login(params);
|
||||
if(result.requires2FA){
|
||||
// 2차인증 필요
|
||||
|
||||
}
|
||||
else{
|
||||
const {
|
||||
tokenType,
|
||||
accessToken,
|
||||
refreshToken,
|
||||
accessTokenExpiresIn,
|
||||
refreshTokenExpiresIn,
|
||||
menuGrants,
|
||||
clientAddressIP,
|
||||
requires2FA
|
||||
} = result;
|
||||
setLocalStorage(StorageKeys.TokenType, tokenType);
|
||||
setLocalStorage(StorageKeys.AccessToken, accessToken);
|
||||
setLocalStorage(StorageKeys.RefreshToken, refreshToken);
|
||||
setLocalStorage(StorageKeys.AccessTokenExpiresIn, accessTokenExpiresIn);
|
||||
setLocalStorage(StorageKeys.RefreshTokenExpiresIn, refreshTokenExpiresIn);
|
||||
setLocalStorage(StorageKeys.MenuGrants, menuGrants);
|
||||
setLocalStorage(StorageKeys.Usrid, params.id);
|
||||
setLocalStorage(StorageKeys.ClientAddressIP, clientAddressIP);
|
||||
setLocalStorage(StorageKeys.Requires2FA, requires2FA);
|
||||
if(isNativeEnvironment){
|
||||
const result: LoginResponse = await requestToken();
|
||||
if(!result) {
|
||||
// 토큰이 null인 경우 로그아웃 처리
|
||||
console.error('Token is null, performing logout');
|
||||
useStore.getState().UserStore.resetUserInfo();
|
||||
logout();
|
||||
return;
|
||||
}
|
||||
setLocalStorage(StorageKeys.TokenType, result.tokenType);
|
||||
setLocalStorage(StorageKeys.AccessToken, result.accessToken);
|
||||
setLocalStorage(StorageKeys.RefreshToken, result.refreshToken);
|
||||
setLocalStorage(StorageKeys.AccessTokenExpiresIn, result.accessTokenExpiresIn);
|
||||
setLocalStorage(StorageKeys.RefreshTokenExpiresIn, result.refreshTokenExpiresIn);
|
||||
setLocalStorage(StorageKeys.MenuGrants, result.menuGrants);
|
||||
setLocalStorage(StorageKeys.ClientAddressIP, result.clientAddressIP);
|
||||
setLocalStorage(StorageKeys.Requires2FA, result.requires2FA);
|
||||
setLocalStorage(StorageKeys.Usrid, result.usrid);
|
||||
|
||||
useStore.getState().UserStore.setUserInfo({
|
||||
...result,
|
||||
usrid: params.id
|
||||
...result
|
||||
});
|
||||
}
|
||||
else{
|
||||
// 개발용 ...
|
||||
if(params){
|
||||
const result = await login(params);
|
||||
setLocalStorage(StorageKeys.TokenType, result.tokenType);
|
||||
setLocalStorage(StorageKeys.AccessToken, result.accessToken);
|
||||
setLocalStorage(StorageKeys.RefreshToken, result.refreshToken);
|
||||
setLocalStorage(StorageKeys.AccessTokenExpiresIn, result.accessTokenExpiresIn);
|
||||
setLocalStorage(StorageKeys.RefreshTokenExpiresIn, result.refreshTokenExpiresIn);
|
||||
setLocalStorage(StorageKeys.MenuGrants, result.menuGrants);
|
||||
setLocalStorage(StorageKeys.ClientAddressIP, result.clientAddressIP);
|
||||
setLocalStorage(StorageKeys.Requires2FA, result.requires2FA);
|
||||
setLocalStorage(StorageKeys.Usrid, params.id);
|
||||
|
||||
useStore.getState().UserStore.setUserInfo({
|
||||
...result,
|
||||
usrid: params.id
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(e: any){
|
||||
|
||||
catch(error: any){
|
||||
console.error('Failed to request token:', error);
|
||||
useStore.getState().UserStore.resetUserInfo();
|
||||
logout();
|
||||
}
|
||||
};
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user