fix-magic-link
This commit is contained in:
parent
49f18ca694
commit
708f2bf211
@ -1,6 +1,7 @@
|
|||||||
// lib/api.ts
|
// lib/api.ts
|
||||||
|
|
||||||
import { ENV_CONFIG } from '@/lib/env-config';
|
import { ENV_CONFIG } from '@/lib/env-config';
|
||||||
|
import { sendMagicLink } from './auth';
|
||||||
// Use ENV_CONFIG for SUPABASE URL and anon key in frontend
|
// Use ENV_CONFIG for SUPABASE URL and anon key in frontend
|
||||||
|
|
||||||
export type ApiOk<T = any> = {
|
export type ApiOk<T = any> = {
|
||||||
@ -1191,6 +1192,8 @@ export type CreateUserInput = {
|
|||||||
full_name: string;
|
full_name: string;
|
||||||
phone?: string | null;
|
phone?: string | null;
|
||||||
role: UserRoleEnum;
|
role: UserRoleEnum;
|
||||||
|
// URL opcional para redirecionamento após o clique no magic link
|
||||||
|
redirect_url?: string | null;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type CreatedUser = {
|
export type CreatedUser = {
|
||||||
@ -1228,7 +1231,38 @@ export async function criarUsuario(input: CreateUserInput): Promise<CreateUserRe
|
|||||||
headers: { ...baseHeaders(), "Content-Type": "application/json" },
|
headers: { ...baseHeaders(), "Content-Type": "application/json" },
|
||||||
body: JSON.stringify(input),
|
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 =====
|
// ===== ALTERNATIVA: Criar usuário diretamente via Supabase Auth =====
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user