아직 DevPals 친구가 아니신가요?
diff --git a/src/pages/login/LoginSuccess.tsx b/src/pages/login/LoginSuccess.tsx
new file mode 100644
index 00000000..cfd2dbed
--- /dev/null
+++ b/src/pages/login/LoginSuccess.tsx
@@ -0,0 +1,33 @@
+import { useEffect } from 'react';
+import { useNavigate, useSearchParams } from 'react-router-dom';
+import useAuthStore from '../../store/authStore';
+import { ROUTES } from '../../constants/routes';
+import * as S from './Login.styled';
+import { Spinner } from '../../components/common/loadingSpinner/LoadingSpinner.styled';
+
+function LoginSuccess() {
+ const [searchParams] = useSearchParams();
+ const { storeLogin } = useAuthStore.getState();
+ const navigate = useNavigate();
+
+ useEffect(() => {
+ const accessToken = searchParams.get('accessToken');
+
+ if (accessToken) {
+ storeLogin(accessToken);
+ localStorage.setItem('accessToken', accessToken);
+ navigate(ROUTES.main);
+ } else {
+ alert('로그인 토큰이 존재하지 않습니다.');
+ navigate(ROUTES.login);
+ }
+ }, []);
+
+ return (
+
+
+
+ );
+}
+
+export default LoginSuccess;
diff --git a/src/routes/AppRoutes.tsx b/src/routes/AppRoutes.tsx
index e2624297..8b23f9b5 100644
--- a/src/routes/AppRoutes.tsx
+++ b/src/routes/AppRoutes.tsx
@@ -14,6 +14,7 @@ import NotFoundPage from '../pages/notFoundPage/NotFoundPage';
import QueryErrorBoundary from '../components/common/error/QueryErrorBoundary';
import { ToastProvider } from '../components/common/Toast/ToastProvider';
const Login = lazy(() => import('../pages/login/Login'));
+const LoginSuccess = lazy(() => import('../pages/login/LoginSuccess'));
const Register = lazy(() => import('../pages/register/Register'));
const ChangePassword = lazy(
() => import('../pages/changePassword/ChangePassword')
@@ -97,6 +98,10 @@ const AppRoutes = () => {
path: ROUTES.login,
element: isLoggedIn ? : ,
},
+ {
+ path: ROUTES.loginSuccess,
+ element: ,
+ },
{
path: ROUTES.signup,
element: isLoggedIn ? (
@@ -343,6 +348,7 @@ const AppRoutes = () => {
),
+
children: [...newRouteList, { path: '*', element: }],
},
]);
diff --git a/src/store/authStore.ts b/src/store/authStore.ts
index c9b0b6ad..ff5f8d60 100644
--- a/src/store/authStore.ts
+++ b/src/store/authStore.ts
@@ -13,7 +13,7 @@ interface AuthState {
userData: UserData | null;
storeLogin: (
accessToken: string,
- refreshToken: string,
+ refreshToken?: string,
userData?: UserData
) => void;
storeLogout: () => void;
@@ -37,9 +37,11 @@ export const getTokens = () => {
return { accessToken, refreshToken };
};
-const setTokens = (accessToken: string, refreshToken: string) => {
+const setTokens = (accessToken: string, refreshToken?: string) => {
localStorage.setItem('accessToken', accessToken);
- localStorage.setItem('refreshToken', refreshToken);
+ if (refreshToken) {
+ localStorage.setItem('refreshToken', refreshToken);
+ }
};
const removeTokens = () => {
@@ -55,7 +57,7 @@ const useAuthStore = create(
storeLogin: (
accessToken: string,
- refreshToken: string,
+ refreshToken?: string,
userData?: UserData
) => {
setTokens(accessToken, refreshToken);