init source
This commit is contained in:
27
middleware/auth.ts
Normal file
27
middleware/auth.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
export default defineNuxtRouteMiddleware((to, _from) => {
|
||||
// 클라이언트 사이드에서만 실행
|
||||
if (import.meta.client) {
|
||||
const userStore = useUserStore();
|
||||
|
||||
// 보호된 라우트 목록(메뉴 확정되면 수정)
|
||||
const protectedRoutes = ["/admin", "/profile", "/dashboard"];
|
||||
|
||||
// 현재 라우트가 보호된 라우트인지 확인
|
||||
const isProtectedRoute = protectedRoutes.some((route) =>
|
||||
to.path.startsWith(route)
|
||||
);
|
||||
|
||||
// 관리자 전용 라우트 확인
|
||||
const isAdminRoute = to.path.startsWith("/admin");
|
||||
|
||||
if (isProtectedRoute && !userStore.isLoggedIn) {
|
||||
// 인증되지 않은 사용자를 로그인 페이지로 리다이렉트
|
||||
return navigateTo("/login");
|
||||
}
|
||||
|
||||
if (isAdminRoute && !userStore.isAdmin) {
|
||||
// 관리자가 아닌 사용자를 홈 페이지로 리다이렉트
|
||||
return navigateTo("/");
|
||||
}
|
||||
}
|
||||
});
|
Reference in New Issue
Block a user