only use supabase token
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user