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:
parent
4005228270
commit
159dd5c000
7 changed files with 17 additions and 10 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}`,
|
||||
|
|
|
|||
|
|
@ -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) => ({
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue