Add development test login

This commit is contained in:
2026-08-13 18:38:08 +09:00
parent a984a6b9b9
commit c2a1e8725e
3 changed files with 51 additions and 0 deletions

View File

@@ -60,3 +60,4 @@
- 카테고리/자산 조회 시 기본 데이터가 비어 있으면 자동 보강되도록 했다.
- 기본 카테고리 초기값을 상위 카테고리 `기본 수입`, `기본 지출` 1개씩으로 단순화했다.
- 카테고리/자산 추가 바텀 시트의 닫기 버튼을 제거하고 추가 실패 안내를 표시하도록 했다.
- 개발 환경에서만 노출되는 테스트 로그인 버튼과 개발용 로그인 API를 추가했다.

View File

@@ -51,6 +51,16 @@
{{ pending ? '확인 중...' : mode === 'login' ? '로그인' : '가입하고 시작하기' }}
</button>
</form>
<button
v-if="isDev"
type="button"
class="btn-secondary mt-3 w-full border-dashed text-muted"
:disabled="pending"
@click="devLogin"
>
개발용 테스트 로그인
</button>
</section>
</template>
@@ -64,6 +74,7 @@ const password = ref('')
const error = ref('')
const pending = ref(false)
const session = useState('session')
const isDev = import.meta.dev
async function submit() {
pending.value = true
@@ -94,6 +105,19 @@ async function submit() {
}
}
async function devLogin() {
pending.value = true
error.value = ''
try {
session.value = await $fetch('/api/auth/dev-login', { method: 'POST' })
await navigateTo('/')
} catch {
error.value = '개발용 로그인에 실패했습니다.'
} finally {
pending.value = false
}
}
watch(mode, () => {
error.value = ''
})

View File

@@ -0,0 +1,26 @@
import { hash } from 'bcryptjs'
import { createError } from 'h3'
import { prisma } from '../../utils/db'
import { setSession } from '../../utils/auth'
import { ensureDefaultMoneyData } from '../../utils/defaults'
export default defineEventHandler(async (event) => {
if (process.env.NODE_ENV === 'production') {
throw createError({ statusCode: 404, statusMessage: 'Not found' })
}
const email = 'user@example.com'
const user = await prisma.user.upsert({
where: { email },
update: {},
create: {
email,
name: '개발 테스트',
passwordHash: await hash('money1234', 10)
}
})
await ensureDefaultMoneyData(prisma, user.id)
setSession(event, user.id)
return { id: user.id, email: user.email, name: user.name }
})