Files
sso-portal/app/api/getVerifyCode/route.ts
zhangheng 37f10118d3 chore: initial commit of sso-mock SSO login service
Next.js + Mantine mock SSO service providing account/password, phone
verify-code, and Feishu QR login. Issues a one-time sso_code that the
external app exchanges for user info.

Includes:
- Feishu callback fix: guard against duplicate/concurrent /api/login
  submissions of the same single-use authorization code (feishuLogin
  once-guard + memoized onLoginSuccess to stop effect re-fire).
- ADAPTATION_GUIDE.md: how to switch from the in-memory code store to
  the real backend auth/index + inner_get_user_info endpoints.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 18:09:30 +08:00

51 lines
1.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { NextResponse } from 'next/server'
/**
* 代理 uirefbase 的发送验证码接口
* uirefbase 路由: POST /api/front/protect/sendVerifyCode
* 真实后端: POST /api/v1/basis/user/phone/code
* 与 uirefbase 的 requestBasis 保持一致:直接 fetch无 SDK
*/
const SHARED_API = (
process.env.NEXT_PUBLIC_SHARED_API_PATH || 'http://172.16.115.31:6610'
).replace(/\/+$/, '')
export async function POST(req: Request) {
const body = await req.json()
const fetchUrl = `${SHARED_API}/api/v1/basis/user/phone/code`
console.log('[sso-mock] getVerifyCode →', fetchUrl, '| phone:', body?.phone)
try {
const res = await fetch(fetchUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(body),
})
const text = await res.text()
let data: any = {}
if (text) {
try {
data = JSON.parse(text)
} catch {
data = { message: text }
}
}
if (res.status !== 200) {
return NextResponse.json(
{ code: 500, message: data?.message || data?.msg || '验证码发送失败' },
{ status: res.status }
)
}
return NextResponse.json(data, { status: 200 })
} catch (err: any) {
console.error('[sso-mock] getVerifyCode error:', err.message)
return NextResponse.json(
{ code: 500, message: err?.message || '验证码发送失败' },
{ status: 500 }
)
}
}