fix(admin): localStorage 토큰 조회를 useAuthStore로 통일

localStorage.getItem("adminToken")이 null을 반환하여 401 인증
에러가 발생하던 문제 수정. Zustand auth-storage에서 토큰을 올바르게
조회하도록 7개 파일 수정.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
caadiq 2026-03-03 19:44:24 +09:00
parent 4005228270
commit 159dd5c000
7 changed files with 17 additions and 10 deletions

View file

@ -6,6 +6,7 @@
import { useState } from "react";
import { motion, AnimatePresence } from "framer-motion";
import { X, Search, MapPin, Globe } from "lucide-react";
import useAuthStore from "@/stores/useAuthStore";
/**
* @param {Object} props
@ -46,7 +47,7 @@ function VenueSearchDialog({ isOpen, onClose, onSelect }) {
setError(null);
try {
const token = localStorage.getItem("adminToken");
const token = useAuthStore.getState().token;
if (region === "domestic") {
// API

View file

@ -5,6 +5,7 @@
import { useState } from 'react';
import { motion, AnimatePresence } from 'framer-motion';
import { X, Search, MapPin } from 'lucide-react';
import useAuthStore from '@/stores/useAuthStore';
/**
* @param {Object} props
@ -33,7 +34,7 @@ function LocationSearchDialog({ isOpen, onClose, onSelect }) {
setSearching(true);
try {
const token = localStorage.getItem('adminToken');
const token = useAuthStore.getState().token;
const response = await fetch(`/api/admin/kakao/places?query=${encodeURIComponent(searchQuery)}`, {
headers: {
Authorization: `Bearer ${token}`,

View file

@ -19,6 +19,7 @@ import {
import { useAdminAuth } from '@/hooks/pc/admin';
import { useToast } from '@/hooks/common';
import { adminAlbumApi, adminMemberApi } from '@/api/admin';
import useAuthStore from '@/stores/useAuthStore';
function AdminAlbumPhotos() {
const { albumId } = useParams();
@ -337,7 +338,7 @@ function AdminAlbumPhotos() {
setProcessingStatus('');
try {
const token = localStorage.getItem('adminToken');
const token = useAuthStore.getState().token;
const formData = new FormData();
const metadata = pendingFiles.map((pf) => ({

View file

@ -25,6 +25,7 @@ import * as categoriesApi from '@/api/admin/categories';
import * as schedulesApi from '@/api/admin/schedules';
import { getMembers } from '@/api/public/members';
import { getColorStyle } from '@/utils/color';
import useAuthStore from '@/stores/useAuthStore';
function ScheduleForm() {
const navigate = useNavigate();
@ -285,7 +286,7 @@ function ScheduleForm() {
setSaving(true);
try {
const token = localStorage.getItem('adminToken');
const token = useAuthStore.getState().token;
// FormData
const submitData = new FormData();

View file

@ -18,6 +18,7 @@ import AdminLayout from "@/components/pc/admin/layout/Layout";
import Toast from "@/components/common/Toast";
import { useAdminAuth } from "@/hooks/pc/admin";
import { useToast } from "@/hooks/common";
import useAuthStore from "@/stores/useAuthStore";
// variants
const containerVariants = {
@ -60,7 +61,7 @@ function YouTubeEditForm() {
const { data: schedule, isLoading: scheduleLoading, isError: scheduleError } = useQuery({
queryKey: ["schedule", id],
queryFn: async () => {
const token = localStorage.getItem("adminToken");
const token = useAuthStore.getState().token;
const res = await fetch(`/api/schedules/${id}`, {
headers: { Authorization: `Bearer ${token}` },
});
@ -126,7 +127,7 @@ function YouTubeEditForm() {
setSaving(true);
try {
const token = localStorage.getItem("adminToken");
const token = useAuthStore.getState().token;
const response = await fetch(`/api/admin/youtube/schedule/${id}`, {
method: "PUT",

View file

@ -12,6 +12,7 @@ import {
import Toast from "@/components/common/Toast";
import { useToast } from "@/hooks/common";
import useAuthStore from "@/stores/useAuthStore";
// X
const XLogo = ({ size = 24, className = "" }) => (
@ -64,7 +65,7 @@ function XForm() {
setPostInfo(null);
try {
const token = localStorage.getItem("adminToken");
const token = useAuthStore.getState().token;
const response = await fetch(
`/api/admin/x/post-info?postId=${id}`,
{
@ -115,7 +116,7 @@ function XForm() {
setSaving(true);
try {
const token = localStorage.getItem("adminToken");
const token = useAuthStore.getState().token;
const response = await fetch("/api/admin/x/schedule", {
method: "POST",

View file

@ -11,6 +11,7 @@ import {
} from "lucide-react";
import Toast from "@/components/common/Toast";
import { useToast } from "@/hooks/common";
import useAuthStore from "@/stores/useAuthStore";
/**
* YouTube 일정 추가
@ -39,7 +40,7 @@ function YouTubeForm() {
setVideoInfo(null);
try {
const token = localStorage.getItem("adminToken");
const token = useAuthStore.getState().token;
const response = await fetch(
`/api/admin/youtube/video-info?url=${encodeURIComponent(url)}`,
{
@ -90,7 +91,7 @@ function YouTubeForm() {
setSaving(true);
try {
const token = localStorage.getItem("adminToken");
const token = useAuthStore.getState().token;
const response = await fetch("/api/admin/youtube/schedule", {
method: "POST",