fix-magic-link
This commit is contained in:
parent
49f18ca694
commit
708f2bf211
@ -1,6 +1,7 @@
|
||||
// lib/api.ts
|
||||
|
||||
import { ENV_CONFIG } from '@/lib/env-config';
|
||||
import { sendMagicLink } from './auth';
|
||||
// Use ENV_CONFIG for SUPABASE URL and anon key in frontend
|
||||
|
||||
export type ApiOk<T = any> = {
|
||||
@ -1191,6 +1192,8 @@ export type CreateUserInput = {
|
||||
full_name: string;
|
||||
phone?: string | null;
|
||||
role: UserRoleEnum;
|
||||
// URL opcional para redirecionamento após o clique no magic link
|
||||
redirect_url?: string | null;
|
||||
};
|
||||
|
||||
export type CreatedUser = {
|
||||
@ -1228,7 +1231,38 @@ export async function criarUsuario(input: CreateUserInput): Promise<CreateUserRe
|
||||
headers: { ...baseHeaders(), "Content-Type": "application/json" },
|
||||
body: JSON.stringify(input),
|
||||
});
|
||||
return await parse<CreateUserResponse>(res);
|
||||
const parsed = await parse<CreateUserResponse>(res);
|
||||
|
||||
// Enviar magic link automaticamente para o email do usuário criado.
|
||||
// Se redirect_url estiver presente, encaminhar na chamada do magic link
|
||||
(async () => {
|
||||
try {
|
||||
// A API de magic link aceita geralmente { email, redirect_to } ou { email }
|
||||
// Aqui usamos a função sendMagicLink existente que aceita apenas email.
|
||||
// Para suportar redirect_url, fazemos um fetch direto caso redirect_url seja fornecido.
|
||||
if (input.redirect_url) {
|
||||
const otpUrl = (ENV_CONFIG.AUTH_ENDPOINTS && (ENV_CONFIG.AUTH_ENDPOINTS as any).OTP) || `${ENV_CONFIG.SUPABASE_URL}/auth/v1/otp`;
|
||||
console.log('[API] Enviando magic link com redirect_url para:', input.email, input.redirect_url);
|
||||
await fetch(otpUrl, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': 'application/json',
|
||||
'apikey': ENV_CONFIG.SUPABASE_ANON_KEY,
|
||||
},
|
||||
body: JSON.stringify({ email: input.email, redirect_to: input.redirect_url }),
|
||||
});
|
||||
} else {
|
||||
console.log('[API] Enviando magic link (sem redirect) para:', input.email);
|
||||
await sendMagicLink(input.email);
|
||||
}
|
||||
console.log('[API] Magic link disparado com sucesso (assíncrono).');
|
||||
} catch (e) {
|
||||
console.error('[API] Falha ao enviar magic link automaticamente:', e);
|
||||
}
|
||||
})();
|
||||
|
||||
return parsed;
|
||||
}
|
||||
|
||||
// ===== ALTERNATIVA: Criar usuário diretamente via Supabase Auth =====
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user