content login function edit

This commit is contained in:
unknown 2025-06-19 21:17:25 +09:00
parent ab16fe8669
commit 505f7d48ac
2 changed files with 93 additions and 25 deletions

View File

@ -1031,9 +1031,10 @@ const removeImage = (index) => {
}
}
// 1. generateContent -
const generateContent = async () => {
if (!canGenerate.value) {
appStore.showSnackbar('모든 필수 항목을 입력해주세요.', 'warning')
if (!formData.value.title?.trim()) {
appStore.showSnackbar('목을 입력해주세요.', 'warning')
return
}
@ -1056,22 +1057,59 @@ const generateContent = async () => {
console.log('📋 [UI] 폼 데이터:', formData.value)
console.log('📁 [UI] 이미지 데이터:', previewImages.value)
// ID
let storeId = 1
// ID - API
let storeId = null
try {
const storeApiUrl = (window.__runtime_config__ && window.__runtime_config__.STORE_URL)
? window.__runtime_config__.STORE_URL
: 'http://localhost:8082/api/store'
const token = localStorage.getItem('accessToken') || localStorage.getItem('auth_token') || localStorage.getItem('token')
if (!token) {
throw new Error('인증 토큰이 없습니다.')
}
const storeResponse = await fetch(`${storeApiUrl}`, {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
})
if (storeResponse.ok) {
const storeData = await storeResponse.json()
storeId = storeData.data?.storeId
console.log('✅ 매장 정보 조회 성공, storeId:', storeId)
} else {
throw new Error(`매장 정보 조회 실패: ${storeResponse.status}`)
}
} catch (error) {
console.error('❌ 매장 정보 조회 실패:', error)
// fallback: localStorage
try {
const storeInfo = JSON.parse(localStorage.getItem('storeInfo') || '{}')
const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}')
if (storeInfo.storeId) {
storeId = storeInfo.storeId
console.log('⚠️ fallback - localStorage에서 매장 ID 사용:', storeId)
} else if (userInfo.storeId) {
storeId = userInfo.storeId
console.log('⚠️ fallback - userInfo에서 매장 ID 사용:', storeId)
} else {
console.warn('⚠️ localStorage에서 매장 ID를 찾을 수 없음, 기본값 사용:', storeId)
throw new Error('매장 정보를 찾을 수 없습니다. 매장 관리 페이지에서 매장을 등록해주세요.')
}
} catch (error) {
console.warn('⚠️ 매장 정보 파싱 실패, 기본값 사용:', storeId)
} catch (fallbackError) {
console.error('❌ fallback 실패:', fallbackError)
throw new Error('매장 정보를 찾을 수 없습니다. 매장 관리 페이지에서 매장을 등록해주세요.')
}
}
if (!storeId) {
throw new Error('매장 ID를 가져올 수 없습니다. 매장 관리 페이지에서 매장을 등록해주세요.')
}
console.log('🏪 [UI] 사용할 매장 ID:', storeId)
@ -1213,6 +1251,7 @@ const selectVersion = (index) => {
selectedVersion.value = index
}
// 2. saveVersion -
const saveVersion = async (index) => {
isPublishing.value = true
publishingIndex.value = index
@ -1222,10 +1261,38 @@ const saveVersion = async (index) => {
console.log('💾 [UI] 저장할 버전 데이터:', version)
// ID
let storeId = 1
// ID - API
let storeId = null
try {
const storeApiUrl = (window.__runtime_config__ && window.__runtime_config__.STORE_URL)
? window.__runtime_config__.STORE_URL
: 'http://localhost:8082/api/store'
const token = localStorage.getItem('accessToken') || localStorage.getItem('auth_token') || localStorage.getItem('token')
if (!token) {
throw new Error('인증 토큰이 없습니다.')
}
const storeResponse = await fetch(`${storeApiUrl}`, {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
})
if (storeResponse.ok) {
const storeData = await storeResponse.json()
storeId = storeData.data?.storeId
console.log('✅ [저장] 매장 정보 조회 성공, storeId:', storeId)
} else {
throw new Error(`매장 정보 조회 실패: ${storeResponse.status}`)
}
} catch (error) {
console.error('❌ [저장] 매장 정보 조회 실패:', error)
// fallback
const storeInfo = JSON.parse(localStorage.getItem('storeInfo') || '{}')
const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}')
@ -1234,10 +1301,12 @@ const saveVersion = async (index) => {
} else if (userInfo.storeId) {
storeId = userInfo.storeId
} else {
console.warn('⚠️ localStorage에서 매장 ID를 찾을 수 없음, 기본값 사용:', storeId)
throw new Error('매장 정보를 찾을 수 없습니다.')
}
} catch (error) {
console.warn('⚠️ 매장 정보 파싱 실패, 기본값 사용:', storeId)
}
if (!storeId) {
throw new Error('매장 ID를 가져올 수 없습니다.')
}
console.log('🏪 [UI] 사용할 매장 ID:', storeId)

View File

@ -45,7 +45,6 @@
@keyup.enter="handleLogin"
/>
<!-- 로그인 옵션 -->
<div class="d-flex justify-space-between align-center mb-6">
<v-checkbox
@ -109,10 +108,10 @@
<h3 class="text-subtitle-2 font-weight-bold mb-2">데모 계정 정보</h3>
<div class="demo-info">
<div class="text-body-2 mb-1">
<span class="font-weight-medium">아이디:</span> user01
<span class="font-weight-medium">아이디:</span> test
</div>
<div class="text-body-2 mb-2">
<span class="font-weight-medium">비밀번호:</span> passw0rd
<span class="font-weight-medium">비밀번호:</span> test1234!
</div>
<v-btn size="small" color="info" variant="outlined" @click="fillDemoCredentials">
데모 계정 자동 입력
@ -328,8 +327,8 @@ const emailChecked = ref(false)
//
const credentials = ref({
username: 'user01',
password: 'passw0rd',
username: 'test',
password: 'test1234!',
})
//
@ -410,8 +409,8 @@ const businessNumberRules = [
//
const fillDemoCredentials = () => {
credentials.value.username = 'user01'
credentials.value.password = 'passw0rd'
credentials.value.username = 'test'
credentials.value.password = 'test1234!'
loginError.value = ''
}