feat: Validation automatique des comptes STAFF/SUPER_STAFF à la création
This commit is contained in:
parent
ab61fb1852
commit
f3081a7807
1 changed files with 37 additions and 22 deletions
|
|
@ -50,33 +50,45 @@ export async function POST(req: Request) {
|
|||
|
||||
const origin = process.env.NEXT_PUBLIC_BASE_URL || "https://paie.odentas.fr";
|
||||
|
||||
// Générer un lien d'activation
|
||||
// Créer l'utilisateur avec confirmation d'email automatique (pour les staff)
|
||||
const { data: createData, error: createError } = await admin.auth.admin.createUser({
|
||||
email,
|
||||
email_confirm: true, // Confirmer automatiquement l'email pour les staff
|
||||
user_metadata: {
|
||||
first_name: firstName || null,
|
||||
is_staff: true,
|
||||
},
|
||||
});
|
||||
|
||||
if (createError) {
|
||||
console.error("Erreur création utilisateur:", createError);
|
||||
return NextResponse.json({
|
||||
error: "Erreur lors de la création de l'utilisateur",
|
||||
message: createError.message
|
||||
}, { status: 400 });
|
||||
}
|
||||
|
||||
const newUserId = createData?.user?.id;
|
||||
|
||||
if (!newUserId) {
|
||||
return NextResponse.json({ error: "Erreur lors de la création de l'utilisateur" }, { status: 400 });
|
||||
}
|
||||
|
||||
// Générer un lien d'activation pour le premier mot de passe
|
||||
const { data: linkData, error: linkError } = await admin.auth.admin.generateLink({
|
||||
type: "magiclink",
|
||||
email,
|
||||
options: {
|
||||
redirectTo: `${origin}/`,
|
||||
data: {
|
||||
first_name: firstName || null,
|
||||
is_staff: true,
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
if (linkError) {
|
||||
console.error("Erreur génération lien:", linkError);
|
||||
return NextResponse.json({
|
||||
error: "Erreur lors de la génération du lien d'activation",
|
||||
message: linkError.message
|
||||
}, { status: 400 });
|
||||
// Ne pas bloquer si l'email échoue, l'utilisateur est déjà créé et confirmé
|
||||
}
|
||||
|
||||
const actionLink = linkData?.properties?.action_link;
|
||||
const newUserId = linkData?.user?.id;
|
||||
|
||||
if (!newUserId || !actionLink) {
|
||||
return NextResponse.json({ error: "Erreur lors de la création de l'utilisateur" }, { status: 400 });
|
||||
}
|
||||
const actionLink = linkData?.properties?.action_link || null;
|
||||
|
||||
// Ajouter l'utilisateur à la table staff_users
|
||||
const { error: staffError } = await admin
|
||||
|
|
@ -104,12 +116,14 @@ export async function POST(req: Request) {
|
|||
try {
|
||||
const creatorName = (user.user_metadata as any)?.first_name || user.email || 'Administrateur';
|
||||
|
||||
// Forcer le domaine production dans le lien d'activation
|
||||
// Remplacer localhost, app-paie, ou tout autre domaine par paie.odentas.fr
|
||||
const productionLink = actionLink
|
||||
.replace(/http:\/\/localhost:\d+/, 'https://paie.odentas.fr')
|
||||
.replace(/https?:\/\/app-paie\.odentas\.fr/, 'https://paie.odentas.fr')
|
||||
.replace(/https?:\/\/[^/]+\//, 'https://paie.odentas.fr/');
|
||||
// Forcer le domaine production dans le lien d'activation si disponible
|
||||
let productionLink = null;
|
||||
if (actionLink) {
|
||||
productionLink = actionLink
|
||||
.replace(/http:\/\/localhost:\d+/, 'https://paie.odentas.fr')
|
||||
.replace(/https?:\/\/app-paie\.odentas\.fr/, 'https://paie.odentas.fr')
|
||||
.replace(/https?:\/\/[^/]+\//, 'https://paie.odentas.fr/');
|
||||
}
|
||||
|
||||
await sendUniversalEmailV2({
|
||||
type: 'staff-account-created',
|
||||
|
|
@ -125,7 +139,8 @@ export async function POST(req: Request) {
|
|||
year: 'numeric',
|
||||
}),
|
||||
linkValidity: '7 jours',
|
||||
ctaUrl: productionLink,
|
||||
ctaUrl: productionLink || 'https://paie.odentas.fr',
|
||||
note: 'Votre compte est déjà activé. Utilisez le lien ci-dessous pour vous connecter et définir votre mot de passe.',
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue