only use supabase token

This commit is contained in:
2025-03-10 13:38:39 +08:00
parent 936af0c4ec
commit 4b5910be83
3 changed files with 86 additions and 80 deletions

View File

@@ -1,7 +1,6 @@
import { Hono } from 'hono';
import { generateToken, verifySupabaseToken } from '../middlewares/auth';
import { verifySupabaseToken, getSupabaseToken } from '../middlewares/auth';
import supabase from '../utils/supabase';
import jwt from 'jsonwebtoken';
const authRouter = new Hono();
@@ -45,8 +44,12 @@ authRouter.post('/register', async (c) => {
return c.json({ error: profileError.message }, 500);
}
// Generate JWT token
const token = generateToken(authData.user.id, authData.user.email!);
// 直接使用 Supabase 的 session token
const sessionToken = authData.session?.access_token;
if (!sessionToken) {
return c.json({ error: 'Failed to generate token' }, 500);
}
return c.json({
message: 'User registered successfully',
@@ -55,7 +58,7 @@ authRouter.post('/register', async (c) => {
email: authData.user.email,
name,
},
token,
token: sessionToken,
}, 201);
} catch (error) {
console.error('Registration error:', error);
@@ -77,8 +80,12 @@ authRouter.post('/login', async (c) => {
return c.json({ error: error.message }, 400);
}
// 使用与 authMiddleware 一致的方式创建 JWT
const token = generateToken(data.user.id, data.user.email || '');
if (!data.session) {
return c.json({ error: 'Failed to login' }, 500);
}
// 直接使用 Supabase 的 session token
const token = data.session.access_token;
// 只返回必要的用户信息和令牌
return c.json({
@@ -132,22 +139,21 @@ authRouter.post('/refresh-token', async (c) => {
return c.json({ error: 'No token provided' }, 401);
}
// 验证当前token
const user = await verifySupabaseToken(token);
// 使用 Supabase 刷新 token
const { data, error } = await supabase.auth.refreshSession({
refresh_token: token
});
if (!user) {
if (error || !data.session || !data.user) {
return c.json({ error: 'Invalid token' }, 401);
}
// 生成新token
const newToken = generateToken(user.id, user.email || '');
return c.json({
message: 'Token refreshed successfully',
token: newToken,
token: data.session.access_token,
user: {
id: user.id,
email: user.email,
id: data.user.id,
email: data.user.email,
},
});
} catch (error) {