// server
export const authMiddleware: RequestHandler = (req, res, next) => {
const authToken = req.headers.authorization.replace("Bearer ", "");
req.supabase = createClient(supabaseUrl, supabaseAnonKey, {
global: { headers: { Authorization: `Bearer ${authToken}` } }
});
supabase.auth.getUser(authToken).then(async ({data, error}) => {
if (error || !data.user) {
return res.sendStatus(401);
}
const { data: userData, error: userError } = await supabase
.from('users').upsert({ id: data.user.id }, { onConflict: 'id', ignoreDuplicates: false }).select('id, name').single();
if (userError || !userData) {
return res.sendStatus(500);
}
try {
req.user = UserSchema.parse({ id: userData.id, name: userData.name });
} catch (parseError) {
return res.sendStatus(500);
}
req.supabaseUser = data.user;
return next();
}).catch(err => {
res.status(500).json({ message: "Internal server error" });
});
};
// server
export const authMiddleware: RequestHandler = (req, res, next) => {
const authToken = req.headers.authorization.replace("Bearer ", "");
req.supabase = createClient(supabaseUrl, supabaseAnonKey, {
global: { headers: { Authorization: `Bearer ${authToken}` } }
});
supabase.auth.getUser(authToken).then(async ({data, error}) => {
if (error || !data.user) {
return res.sendStatus(401);
}
const { data: userData, error: userError } = await supabase
.from('users').upsert({ id: data.user.id }, { onConflict: 'id', ignoreDuplicates: false }).select('id, name').single();
if (userError || !userData) {
return res.sendStatus(500);
}
try {
req.user = UserSchema.parse({ id: userData.id, name: userData.name });
} catch (parseError) {
return res.sendStatus(500);
}
req.supabaseUser = data.user;
return next();
}).catch(err => {
res.status(500).json({ message: "Internal server error" });
});
};