Spaces:
Sleeping
Sleeping
File size: 818 Bytes
5b7955a b9d823b 5b7955a b9d823b 5b7955a b9d823b 5b7955a b9d823b 5b7955a b9d823b 5b7955a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import jwt from 'jsonwebtoken';
import { supabase } from '../config/supabase.js';
export const authMiddleware = async (req, res, next) => {
const token = req.headers.authorization?.split(' ')[1];
if (!token) return res.status(401).json({ error: 'No token' });
// Try custom JWT first (email/password login)
try {
req.user = jwt.verify(token, process.env.JWT_SECRET);
return next();
} catch {
// not a custom token, try Supabase OAuth token
}
// Try Supabase OAuth token (Google login etc.)
try {
const { data: { user }, error } = await supabase.auth.getUser(token);
if (error || !user) throw new Error('Invalid Supabase token');
req.user = { id: user.id, email: user.email };
return next();
} catch {
return res.status(401).json({ error: 'Invalid token' });
}
};
|