Migração completa para Logto - Remoção de Clerk finalizada

This commit is contained in:
2026-03-31 10:32:42 +00:00
parent 87a87ae228
commit 49538cfbd4
21 changed files with 371 additions and 688 deletions

View File

@@ -7,7 +7,7 @@ interface AuthRequest extends Request {
export const syncUser = async (req: Request, res: Response) => {
try {
const { email, name } = req.body;
const { email, name, logto_id } = req.body;
if (!email || !name) {
return res.status(400).json({ error: 'email e name são obrigatórios.' });
@@ -21,6 +21,7 @@ export const syncUser = async (req: Request, res: Response) => {
.insert({
email,
name,
logto_id,
role: 'guest'
})
.select()

View File

@@ -30,10 +30,28 @@ export async function authenticateRequest(req: any): Promise<AppUser | null> {
const logtoId = payload.sub as string;
const user = await findOneGpi('users', { logto_id: logtoId });
// Primeiro tenta pelo Logto ID
let user = await findOneGpi('users', { logto_id: logtoId });
// Se não encontrar, tenta pelo email (se houver no payload do token)
if (!user && payload.email) {
const email = payload.email as string;
user = await findOneGpi('users', { email });
if (user) {
// Vincula o Logto ID ao usuário existente
await supabase
.from('users')
.update({ logto_id: logtoId })
.eq('id', user.id);
user.logto_id = logtoId;
console.log(`[Auth] Usuário ${email} vinculado ao Logto ID ${logtoId}`);
}
}
if (!user) {
console.log(`[Auth] Usuário Logto ${logtoId} não encontrado no GPI`);
console.log(`[Auth] Usuário Logto ${logtoId} sem registro no GPI`);
return null;
}