only use supabase token
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
import { swaggerUI } from '@hono/swagger-ui'
|
||||
import { Hono } from 'hono'
|
||||
import jwt from 'jsonwebtoken'
|
||||
import config from '../config'
|
||||
import supabase from '../utils/supabase'
|
||||
|
||||
// 创建 OpenAPI 规范
|
||||
export const openAPISpec = {
|
||||
@@ -1839,26 +1838,52 @@ export const createSwaggerUI = () => {
|
||||
// 添加临时的 token 生成端点,仅用于 Swagger 测试
|
||||
app.get('/api/swagger/token', async (c) => {
|
||||
try {
|
||||
// 创建一个临时 token,与 authMiddleware 中的验证方式一致
|
||||
const token = jwt.sign(
|
||||
{
|
||||
sub: 'swagger-test-user',
|
||||
email: 'swagger@test.com',
|
||||
},
|
||||
config.jwt.secret,
|
||||
{
|
||||
expiresIn: '1h',
|
||||
// Swagger 测试用户的凭据
|
||||
const email = 'swagger@test.com';
|
||||
const password = 'swagger-test-password';
|
||||
|
||||
// 尝试使用 Supabase 认证
|
||||
const { data, error } = await supabase.auth.signInWithPassword({
|
||||
email,
|
||||
password
|
||||
});
|
||||
|
||||
if (error || !data.session) {
|
||||
// 如果登录失败,可能需要先创建测试用户
|
||||
console.log('尝试创建 Swagger 测试用户...');
|
||||
|
||||
// 尝试创建测试用户
|
||||
await supabase.auth.admin.createUser({
|
||||
email,
|
||||
password,
|
||||
email_confirm: true,
|
||||
});
|
||||
|
||||
// 再次尝试登录
|
||||
const loginResult = await supabase.auth.signInWithPassword({
|
||||
email,
|
||||
password
|
||||
});
|
||||
|
||||
if (loginResult.error || !loginResult.data.session) {
|
||||
return c.json({ error: '无法创建测试用户凭据', details: loginResult.error?.message }, 500);
|
||||
}
|
||||
);
|
||||
|
||||
return c.json({
|
||||
message: '已创建 Swagger 测试用户并生成 token',
|
||||
token: loginResult.data.session.access_token,
|
||||
usage: '在 Authorize 对话框中输入: Bearer [token]'
|
||||
});
|
||||
}
|
||||
|
||||
return c.json({
|
||||
message: '此 token 仅用于 Swagger UI 测试',
|
||||
token,
|
||||
token: data.session.access_token,
|
||||
usage: '在 Authorize 对话框中输入: Bearer [token]'
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Error generating swagger token:', error);
|
||||
return c.json({ error: 'Failed to generate token' }, 500);
|
||||
return c.json({ error: '生成 token 失败', details: error instanceof Error ? error.message : String(error) }, 500);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user