[FIX] ServicesController + simulate-nis2: adatta a schema users reale (full_name, is_active)
- ServicesController::provision(): INSERT users usa full_name/is_active (non first_name/last_name/status) - ServicesController::ssoLogin(): stesso fix per SSO user creation - simulate-nis2::ensureUser(): registration payload usa full_name (non first_name+last_name) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
eddc2fe79d
commit
d51c365e46
@ -325,14 +325,10 @@ class ServicesController extends BaseController
|
|||||||
|
|
||||||
if (!$user) {
|
if (!$user) {
|
||||||
// Crea utente SSO (senza password — accede solo via token)
|
// Crea utente SSO (senza password — accede solo via token)
|
||||||
$parts = explode(' ', $name, 2);
|
|
||||||
$firstName = $parts[0] ?? $email;
|
|
||||||
$lastName = $parts[1] ?? '';
|
|
||||||
|
|
||||||
Database::query(
|
Database::query(
|
||||||
'INSERT INTO users (email, password_hash, first_name, last_name, role, status)
|
'INSERT INTO users (email, password_hash, full_name, role, is_active)
|
||||||
VALUES (?, ?, ?, ?, ?, "active")',
|
VALUES (?, ?, ?, ?, 1)',
|
||||||
[$email, '', $firstName, $lastName, $role]
|
[$email, '', $name ?: $email, $role]
|
||||||
);
|
);
|
||||||
$userId = (int) Database::lastInsertId();
|
$userId = (int) Database::lastInsertId();
|
||||||
} else {
|
} else {
|
||||||
@ -525,13 +521,14 @@ class ServicesController extends BaseController
|
|||||||
$ragioneSociale = trim($company['ragione_sociale'] ?? '');
|
$ragioneSociale = trim($company['ragione_sociale'] ?? '');
|
||||||
$partitaIva = preg_replace('/[^0-9]/', '', $company['partita_iva'] ?? '');
|
$partitaIva = preg_replace('/[^0-9]/', '', $company['partita_iva'] ?? '');
|
||||||
$adminEmail = trim($admin['email'] ?? '');
|
$adminEmail = trim($admin['email'] ?? '');
|
||||||
$adminFirst = trim($admin['first_name'] ?? '');
|
// Supporta sia full_name che first_name+last_name
|
||||||
$adminLast = trim($admin['last_name'] ?? '');
|
$adminFullName = trim($admin['full_name']
|
||||||
|
?? trim(($admin['first_name'] ?? '') . ' ' . ($admin['last_name'] ?? '')));
|
||||||
|
|
||||||
if (!$ragioneSociale) $this->jsonError('company.ragione_sociale obbligatorio', 400, 'MISSING_FIELD');
|
if (!$ragioneSociale) $this->jsonError('company.ragione_sociale obbligatorio', 400, 'MISSING_FIELD');
|
||||||
if (strlen($partitaIva) !== 11) $this->jsonError('company.partita_iva non valida (11 cifre)', 400, 'INVALID_VAT');
|
if (strlen($partitaIva) !== 11) $this->jsonError('company.partita_iva non valida (11 cifre)', 400, 'INVALID_VAT');
|
||||||
if (!filter_var($adminEmail, FILTER_VALIDATE_EMAIL)) $this->jsonError('admin.email non valida', 400, 'INVALID_EMAIL');
|
if (!filter_var($adminEmail, FILTER_VALIDATE_EMAIL)) $this->jsonError('admin.email non valida', 400, 'INVALID_EMAIL');
|
||||||
if (!$adminFirst || !$adminLast) $this->jsonError('admin.first_name e last_name obbligatori', 400, 'MISSING_FIELD');
|
if (!$adminFullName) $this->jsonError('admin.full_name obbligatorio', 400, 'MISSING_FIELD');
|
||||||
|
|
||||||
$db = Database::getInstance();
|
$db = Database::getInstance();
|
||||||
|
|
||||||
@ -603,10 +600,10 @@ class ServicesController extends BaseController
|
|||||||
$userId = (int) $existingUser['id'];
|
$userId = (int) $existingUser['id'];
|
||||||
} else {
|
} else {
|
||||||
Database::query(
|
Database::query(
|
||||||
'INSERT INTO users (email, password_hash, first_name, last_name, role, status,
|
'INSERT INTO users (email, password_hash, full_name, role, is_active,
|
||||||
phone, job_title, must_change_password)
|
phone, job_title, must_change_password)
|
||||||
VALUES (?,?,?,?,\'super_admin\',\'active\',?,?,1)',
|
VALUES (?,?,?,\'org_admin\',1,?,?,1)',
|
||||||
[$adminEmail, $passwordHash, $adminFirst, $adminLast,
|
[$adminEmail, $passwordHash, $adminFullName,
|
||||||
$admin['phone'] ?? null, $admin['title'] ?? null]
|
$admin['phone'] ?? null, $admin['title'] ?? null]
|
||||||
);
|
);
|
||||||
$userId = (int) Database::lastInsertId();
|
$userId = (int) Database::lastInsertId();
|
||||||
|
|||||||
@ -196,16 +196,14 @@ function ensureUser(string $firstName, string $lastName, string $email, string $
|
|||||||
|
|
||||||
// Registrazione
|
// Registrazione
|
||||||
$regRes = api('POST', '/auth/register', [
|
$regRes = api('POST', '/auth/register', [
|
||||||
'first_name' => $firstName,
|
'full_name' => trim("$firstName $lastName"),
|
||||||
'last_name' => $lastName,
|
|
||||||
'email' => DEMO_EMAIL !== $email ? DEMO_EMAIL : $email,
|
'email' => DEMO_EMAIL !== $email ? DEMO_EMAIL : $email,
|
||||||
'password' => $password,
|
'password' => $password,
|
||||||
'role' => $role,
|
'role' => $role,
|
||||||
]);
|
]);
|
||||||
// Override email per demo (sempre DEMO_EMAIL ma tracking per slug)
|
// Override email per demo (sempre DEMO_EMAIL ma tracking per slug)
|
||||||
$regRes2 = api('POST', '/auth/register', [
|
$regRes2 = api('POST', '/auth/register', [
|
||||||
'first_name' => $firstName,
|
'full_name' => trim("$firstName $lastName"),
|
||||||
'last_name' => $lastName,
|
|
||||||
'email' => $email,
|
'email' => $email,
|
||||||
'password' => $password,
|
'password' => $password,
|
||||||
'role' => $role,
|
'role' => $role,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user