Migração completa para Logto - Remoção de Clerk finalizada
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user