feat(admin): consentement aux annonces et désabonnement sans connexion
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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user