139 lines
4.3 KiB
TypeScript
139 lines
4.3 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server';
|
|
import { createSbServiceRole } from '@/lib/supabaseServer';
|
|
|
|
/**
|
|
* POST /api/signature-salarie/verify-birthdate
|
|
*
|
|
* Vérifie la date de naissance d'un salarié avant de lui permettre d'accéder à la signature
|
|
*
|
|
* Body: {
|
|
* docuseal_id: string,
|
|
* birthdate: string (format YYYY-MM-DD)
|
|
* }
|
|
*/
|
|
export async function POST(request: NextRequest) {
|
|
console.log('=== API Vérification Date de Naissance Salarié ===');
|
|
|
|
try {
|
|
const { docuseal_id, birthdate } = await request.json();
|
|
|
|
// Validation des paramètres
|
|
if (!docuseal_id || !birthdate) {
|
|
console.error('❌ Paramètres manquants:', { docuseal_id, birthdate });
|
|
return NextResponse.json(
|
|
{ error: 'Paramètres manquants', verified: false },
|
|
{ status: 400 }
|
|
);
|
|
}
|
|
|
|
console.log('🔍 Vérification pour docuseal_id:', docuseal_id);
|
|
|
|
// Créer le client Supabase avec service role
|
|
const supabase = createSbServiceRole();
|
|
|
|
// 1. Récupérer l'email du salarié depuis la soumission DocuSeal
|
|
// On cherche dans cddu_contracts pour trouver le contrat lié au slug DocuSeal
|
|
const { data: contract, error: contractError } = await supabase
|
|
.from('cddu_contracts')
|
|
.select('employee_id, salarie_email')
|
|
.eq('docuseal_employee_slug', docuseal_id)
|
|
.maybeSingle();
|
|
|
|
if (contractError) {
|
|
console.error('❌ Erreur lors de la récupération du contrat:', contractError);
|
|
return NextResponse.json(
|
|
{ error: 'Erreur lors de la vérification', verified: false },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
|
|
if (!contract) {
|
|
console.error('❌ Aucun contrat trouvé pour docuseal_id:', docuseal_id);
|
|
return NextResponse.json(
|
|
{ error: 'Document introuvable', verified: false },
|
|
{ status: 404 }
|
|
);
|
|
}
|
|
|
|
console.log('📄 Contrat trouvé:', {
|
|
employee_id: contract.employee_id,
|
|
salarie_email: contract.salarie_email
|
|
});
|
|
|
|
// 2. Récupérer la date de naissance du salarié depuis la table salaries
|
|
const { data: salarie, error: salarieError } = await supabase
|
|
.from('salaries')
|
|
.select('date_naissance, prenom, nom')
|
|
.eq('id', contract.employee_id)
|
|
.maybeSingle();
|
|
|
|
if (salarieError) {
|
|
console.error('❌ Erreur lors de la récupération du salarié:', salarieError);
|
|
return NextResponse.json(
|
|
{ error: 'Erreur lors de la vérification', verified: false },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
|
|
if (!salarie) {
|
|
console.error('❌ Salarié introuvable pour employee_id:', contract.employee_id);
|
|
return NextResponse.json(
|
|
{ error: 'Salarié introuvable', verified: false },
|
|
{ status: 404 }
|
|
);
|
|
}
|
|
|
|
if (!salarie.date_naissance) {
|
|
console.warn('⚠️ Date de naissance non renseignée pour le salarié');
|
|
// Si pas de date de naissance en base, on accepte quand même (pour ne pas bloquer)
|
|
return NextResponse.json({
|
|
verified: true,
|
|
message: 'Vérification acceptée (date de naissance non renseignée)'
|
|
});
|
|
}
|
|
|
|
console.log('👤 Salarié trouvé:', {
|
|
prenom: salarie.prenom,
|
|
nom: salarie.nom,
|
|
date_naissance: salarie.date_naissance
|
|
});
|
|
|
|
// 3. Comparer les dates de naissance
|
|
// Normaliser les dates pour la comparaison (format YYYY-MM-DD)
|
|
const dbBirthdate = new Date(salarie.date_naissance).toISOString().split('T')[0];
|
|
const inputBirthdate = new Date(birthdate).toISOString().split('T')[0];
|
|
|
|
console.log('📅 Comparaison dates:', {
|
|
db: dbBirthdate,
|
|
input: inputBirthdate,
|
|
match: dbBirthdate === inputBirthdate
|
|
});
|
|
|
|
if (dbBirthdate === inputBirthdate) {
|
|
console.log('✅ Date de naissance vérifiée avec succès');
|
|
return NextResponse.json({
|
|
verified: true,
|
|
message: 'Date de naissance vérifiée'
|
|
});
|
|
} else {
|
|
console.log('❌ Date de naissance incorrecte');
|
|
return NextResponse.json(
|
|
{
|
|
error: 'Date de naissance incorrecte',
|
|
verified: false
|
|
},
|
|
{ status: 401 }
|
|
);
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('❌ Erreur lors de la vérification de la date de naissance:', error);
|
|
return NextResponse.json(
|
|
{
|
|
error: 'Erreur serveur lors de la vérification',
|
|
verified: false
|
|
},
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
}
|