Checkpoint: Fix testConnection : le backend lit désormais le mot de passe directement en base (jamais exposé au frontend). Timeout porté à 25s. Détection correcte de invalid_credentials dans la réponse JSON FreePro.
This commit is contained in:
@@ -2350,16 +2350,35 @@ export const appRouter = router({
|
||||
return { success: true };
|
||||
}),
|
||||
|
||||
/** Teste la connexion au portail FreePro */
|
||||
/** Teste la connexion au portail FreePro.
|
||||
* Le mot de passe est récupéré depuis la base de données (le frontend ne le reçoit jamais en clair).
|
||||
* L'email peut être passé en paramètre pour tester avant sauvegarde, ou laisser vide pour utiliser celui en base.
|
||||
*/
|
||||
testConnection: protectedProcedure
|
||||
.input(
|
||||
z.object({
|
||||
email: z.string().email(),
|
||||
password: z.string().min(1),
|
||||
email: z.string().optional(),
|
||||
password: z.string().optional(),
|
||||
})
|
||||
)
|
||||
.mutation(async ({ input }) => {
|
||||
return testFreeproConnection(input.email, input.password);
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
// Récupérer les vrais credentials depuis la base de données
|
||||
const settings = await getFreeproSettings(ctx.user.id);
|
||||
if (!settings?.loginPassword) {
|
||||
return {
|
||||
success: false,
|
||||
error: "Aucun mot de passe configuré. Veuillez sauvegarder les paramètres d'abord.",
|
||||
};
|
||||
}
|
||||
const email = input?.email && !input.email.includes("•") ? input.email : settings.loginEmail ?? "";
|
||||
const password = input?.password && !input.password.includes("•") ? input.password : settings.loginPassword;
|
||||
if (!email || !email.includes("@")) {
|
||||
return {
|
||||
success: false,
|
||||
error: "Aucun email configuré. Veuillez sauvegarder les paramètres d'abord.",
|
||||
};
|
||||
}
|
||||
return testFreeproConnection(email, password);
|
||||
}),
|
||||
|
||||
/** Force la récupération immédiate des factures FreePro */
|
||||
|
||||
Reference in New Issue
Block a user