feat(admin): consentement aux annonces et désabonnement sans connexion
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m58s
CI / Deploy production (on server) (push) Successful in 26s

Les comptes déjà créés ne sont pas inscrits. Le choix est facultatif à l’inscription et dans les paramètres. Un lien public demande confirmation avant d’arrêter les actualités, sans toucher aux messages de compte.
This commit is contained in:
Antigravity
2026-09-06 09:23:10 +00:00
parent 6fa12f6e13
commit 360e58e473
33 changed files with 1036 additions and 9 deletions

View File

@@ -50,7 +50,7 @@ export async function register(prevState: string | undefined, formData: FormData
const hashedPassword = await bcrypt.hash(password, 10);
const role = isAdmin ? 'ADMIN' : 'USER';
await prisma.user.create({
const created = await prisma.user.create({
data: {
email: normalizedEmail,
password: hashedPassword,
@@ -61,6 +61,25 @@ export async function register(prevState: string | undefined, formData: FormData
},
});
if (formData.get('marketingConsent') === '1') {
try {
const { setMarketingOptIn } = await import('@/lib/marketing/preference')
const { marketingRequestMeta } = await import('@/lib/marketing/request-meta')
const meta = await marketingRequestMeta()
await setMarketingOptIn({
userId: created.id,
optedIn: true,
source: 'register',
language: typeof formData.get('marketingLanguage') === 'string'
? String(formData.get('marketingLanguage'))
: null,
meta,
})
} catch (err) {
console.error('[register] marketing consent save failed:', err)
}
}
if (!isAdmin) {
const mailResult = await sendVerificationEmail({
email: normalizedEmail,