[FEAT] Ruolo Consulente + Wizard Registrazione v2
- register.html: step 0 scelta profilo (Azienda / Consulente) - onboarding.html: wizard 4-step con P.IVA obbligatoria (auto-fetch CertiSource) - companies.html: nuova dashboard consulente con cards aziende e compliance score - common.js: org-switcher sidebar + role labels corretti per consulente - login.html: routing post-login (consulente → companies.html) - api.js: isConsultant(), setUserRole(), register con user_type - AuthController: user_type=consultant → role=consultant in users table - OnboardingController: multi-org per consulente, duplicate VAT check - 005_consultant_support.sql: aggiunge 'consultant' a user_organizations.role ENUM Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
ba21534e6a
commit
7080695d06
+18
-2
@@ -72,6 +72,7 @@ class NIS2API {
|
||||
const result = await this.post('/auth/login', { email, password });
|
||||
if (result.success) {
|
||||
this.setTokens(result.data.access_token, result.data.refresh_token);
|
||||
this.setUserRole(result.data.user.role);
|
||||
if (result.data.organizations && result.data.organizations.length > 0) {
|
||||
const primary = result.data.organizations.find(o => o.is_primary) || result.data.organizations[0];
|
||||
this.setOrganization(primary.organization_id);
|
||||
@@ -80,10 +81,11 @@ class NIS2API {
|
||||
return result;
|
||||
}
|
||||
|
||||
async register(email, password, fullName) {
|
||||
const result = await this.post('/auth/register', { email, password, full_name: fullName });
|
||||
async register(email, password, fullName, userType = 'azienda') {
|
||||
const result = await this.post('/auth/register', { email, password, full_name: fullName, user_type: userType });
|
||||
if (result.success) {
|
||||
this.setTokens(result.data.access_token, result.data.refresh_token);
|
||||
localStorage.setItem('nis2_user_role', result.data.user.role);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -122,6 +124,20 @@ class NIS2API {
|
||||
localStorage.removeItem('nis2_access_token');
|
||||
localStorage.removeItem('nis2_refresh_token');
|
||||
localStorage.removeItem('nis2_org_id');
|
||||
localStorage.removeItem('nis2_user_role');
|
||||
}
|
||||
|
||||
// Salva ruolo utente al login
|
||||
setUserRole(role) {
|
||||
localStorage.setItem('nis2_user_role', role);
|
||||
}
|
||||
|
||||
getUserRole() {
|
||||
return localStorage.getItem('nis2_user_role');
|
||||
}
|
||||
|
||||
isConsultant() {
|
||||
return this.getUserRole() === 'consultant';
|
||||
}
|
||||
|
||||
setOrganization(orgId) {
|
||||
|
||||
Reference in New Issue
Block a user