[FEAT] invite: recipient data (nome/cognome/email/piva) pre-compila form registrazione + invite_url->register.html

This commit is contained in:
DevEnv nis2-agile
2026-03-10 11:57:19 +01:00
parent 67560e1758
commit 7bb92b1971
3 changed files with 28 additions and 9 deletions
+14 -4
View File
@@ -73,6 +73,15 @@ class InviteController extends BaseController
$restrictVat = preg_replace('/[^0-9]/', '', $body['restrict_vat'] ?? '');
$restrictEmail = filter_var($body['restrict_email'] ?? '', FILTER_VALIDATE_EMAIL) ?: null;
$notes = trim($body['notes'] ?? '') ?: null;
// Dati destinatario (pre-compilano il form di registrazione)
$recipient = [];
if (!empty($body['recipient_first_name'])) $recipient['first_name'] = substr(trim($body['recipient_first_name']), 0, 100);
if (!empty($body['recipient_last_name'])) $recipient['last_name'] = substr(trim($body['recipient_last_name']), 0, 100);
if (!empty($body['recipient_email'])) $recipient['email'] = filter_var(trim($body['recipient_email']), FILTER_VALIDATE_EMAIL) ?: null;
if (!empty($body['recipient_company'])) $recipient['company'] = substr(trim($body['recipient_company']), 0, 255);
if (!empty($body['recipient_vat'])) $recipient['vat'] = preg_replace('/[^0-9]/', '', $body['recipient_vat']);
$metadata = !empty($recipient) ? json_encode(['recipient' => $recipient]) : null;
$maxUsersPerOrg = isset($body['max_users_per_org']) ? max(1, min(9999, (int)$body['max_users_per_org'])) : null;
$priceEur = isset($body['price_eur']) ? round((float)$body['price_eur'], 2) : null;
$resellerName = substr(trim($body['reseller_name'] ?? ''), 0, 128) ?: null;
@@ -90,13 +99,13 @@ class InviteController extends BaseController
(token_prefix, token_hash, plan, duration_months, label, notes,
max_uses, max_users_per_org, price_eur, reseller_name,
expires_at, channel, issued_to, issued_by,
restrict_vat, restrict_email)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)',
restrict_vat, restrict_email, metadata)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)',
[
$prefix, $tokenHash, $plan, $durationMonths,
$label, $notes, $maxUses, $maxUsersPerOrg, $priceEur, $resellerName,
$expiresAt, $channel, $issuedTo, $issuedBy,
$restrictVat ?: null, $restrictEmail,
$restrictVat ?: null, $restrictEmail, $metadata,
]
);
$inviteId = (int) Database::lastInsertId();
@@ -114,7 +123,8 @@ class InviteController extends BaseController
'channel' => $channel,
'issued_to' => $issuedTo,
'label' => $label,
'invite_url' => APP_URL . '/onboarding.html?invite=' . urlencode($rawToken),
'invite_url' => APP_URL . '/register.html?invite=' . urlencode($rawToken),
'recipient' => !empty($recipient) ? $recipient : null,
'provision_hint' => 'POST /api/services/provision con invite_token: "' . $rawToken . '"',
];