From 300774623bce04f8b5f68413eb9f1b9752340071 Mon Sep 17 00:00:00 2001 From: michele Date: Fri, 28 Aug 2026 12:59:09 +0200 Subject: [PATCH] fix(impersonation): resolve 1-click impersonation with dedicated HTTP route, consolidate Cecilia Tordini studio scoping (#13), enable Adminer dual DB switcher (MySQL/PgSQL), and update ASCII wireframes (task-d095b0e23b) --- .../Pages/SuperAdmin/Amministratori.php | 29 +---- public/adminer.php | 61 ++++++---- routes/web.php | 22 ++++ .../ui-wireframes/fornitori-anagrafica.md | 67 ++++++----- skill-netgescon/ui-wireframes/stabili.md | 104 +++++++++++------- 5 files changed, 163 insertions(+), 120 deletions(-) diff --git a/app/Filament/Pages/SuperAdmin/Amministratori.php b/app/Filament/Pages/SuperAdmin/Amministratori.php index abd0534..c28214c 100755 --- a/app/Filament/Pages/SuperAdmin/Amministratori.php +++ b/app/Filament/Pages/SuperAdmin/Amministratori.php @@ -155,20 +155,9 @@ public function impersonaSelected(): void return; } - $amm = Amministratore::query()->with('user')->find($this->selectedAmministratoreId); - if ($amm && $amm->user) { - $actorId = Auth::id(); - $targetUser = $amm->user; - - if (method_exists($targetUser, 'hasRole') && ! $targetUser->hasAnyRole(['admin', 'amministratore', 'super-admin'])) { - $targetUser->assignRole('amministratore'); - } - - session(['impersonator_id' => $actorId]); - Auth::guard('web')->login($targetUser, true); - request()->session()->regenerate(); - - $this->redirect('/admin-filament'); + $amm = Amministratore::query()->find($this->selectedAmministratoreId); + if ($amm && $amm->user_id) { + $this->redirect(route('impersonate.take', ['user' => $amm->user_id]), navigate: false); } } @@ -273,16 +262,8 @@ public function table(Table $table): Table ->modalDescription('Stai per accedere al sistema impersonando lo studio dell’amministratore selezionato. Potrai tornare a SuperAdmin in qualsiasi momento con il pulsante in testa.') ->visible(fn(Amministratore $record): bool => (bool) $record->user_id && $record->user_id !== Auth::id()) ->action(function (Amministratore $record): void { - if ($record->user) { - $actorId = Auth::id(); - $targetUser = $record->user; - if (method_exists($targetUser, 'hasRole') && ! $targetUser->hasAnyRole(['admin', 'amministratore', 'super-admin'])) { - $targetUser->assignRole('amministratore'); - } - session(['impersonator_id' => $actorId]); - Auth::login($targetUser); - session()->save(); - $this->redirect('/admin-filament', navigate: false); + if ($record->user_id) { + $this->redirect(route('impersonate.take', ['user' => $record->user_id]), navigate: false); } }), diff --git a/public/adminer.php b/public/adminer.php index e870f3e..f230661 100644 --- a/public/adminer.php +++ b/public/adminer.php @@ -4,6 +4,7 @@ * * SECURE WRAPPER FOR ADMINER * - Disabled in Production (APP_ENV=production or APP_DEBUG=false) + * - Supports 1-Click Switching between MySQL Staging and PostgreSQL Consolidato * - Auto-connects via TCP (127.0.0.1) to avoid Unix Socket Peer Auth failures * - Strips and hides credentials from URL query parameters to prevent password leaks */ @@ -53,14 +54,17 @@ function env_get_val($key, $default = '') { function adminer_object() { class NetGesconAdminerSecurity extends \Adminer\Adminer { function name() { - return "NetGescon Database Visualizer"; + return "NetGescon Database Visualizer (MySQL / PostgreSQL)"; } function credentials() { - $dbHost = env_get_val("DB_HOST", "127.0.0.1"); - if ($dbHost === "localhost") { - $dbHost = "127.0.0.1"; + $driver = $_POST["auth"]["driver"] ?? $_GET["pgsql"] ?? "server"; + $dbHost = "127.0.0.1"; + + if ($driver === "pgsql" || isset($_GET["pgsql"])) { + return array($dbHost, "netgescon", "netgescon_pass"); } + $dbUser = env_get_val("DB_USERNAME", "netgescon_user"); $dbPass = env_get_val("DB_PASSWORD", "NetGescon2024!"); @@ -77,29 +81,48 @@ function login($login, $password) { function loginForm() { $connection = env_get_val("DB_CONNECTION", "mysql"); - $driverVal = ($connection === "pgsql") ? "pgsql" : "server"; - $dbUser = env_get_val("DB_USERNAME", "netgescon_user"); - $dbPass = env_get_val("DB_PASSWORD", "NetGescon2024!"); - $dbName = env_get_val("DB_DATABASE", "netgescon"); + $defaultDriver = ($connection === "pgsql") ? "pgsql" : "server"; + $mySqlUser = env_get_val("DB_USERNAME", "netgescon_user"); + $mySqlPass = env_get_val("DB_PASSWORD", "NetGescon2024!"); + $dbName = env_get_val("DB_DATABASE", "netgescon"); - echo '
'; - echo 'πŸ”’ NetGescon Secure DB Console Visualizer
'; - echo 'Connessione locale (.env): Engine=' . strtoupper($connection) . ' | DB=' . $dbName . ' | User=' . $dbUser . '.
'; - echo ''; + echo '
'; + echo 'πŸ”’ NetGescon Secure Dual DB Visualizer
'; + echo 'Seleziona il motore di database su cui operare (TCP 127.0.0.1):
'; + echo '
'; + echo ''; + echo ''; + echo '
'; + echo '
'; + echo ''; + echo '
'; echo '
'; echo ''; return true; diff --git a/routes/web.php b/routes/web.php index ceda8a6..502491d 100755 --- a/routes/web.php +++ b/routes/web.php @@ -41,6 +41,28 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Route; +// --- Impersonation Take Route --- +Route::get('/admin-filament/impersonate/take/{user}', function (\App\Models\User $user) { + $currentActor = Auth::user(); + if (! $currentActor || ! $currentActor->hasRole('super-admin')) { + if (! session('impersonator_id')) { + abort(403, 'Solo un SuperAdmin puΓ² impersonare uno studio.'); + } + } + + $actorId = session('impersonator_id') ?: Auth::id(); + + if (method_exists($user, 'hasRole') && ! $user->hasAnyRole(['admin', 'amministratore', 'super-admin'])) { + $user->assignRole('amministratore'); + } + + session(['impersonator_id' => $actorId]); + Auth::guard('web')->login($user, true); + request()->session()->regenerate(); + + return redirect('/admin-filament'); +})->name('impersonate.take'); + // --- Impersonation Leave Route --- Route::get('/admin-filament/impersonate/leave', function () { $impersonatorId = session('impersonator_id'); diff --git a/skill-netgescon/ui-wireframes/fornitori-anagrafica.md b/skill-netgescon/ui-wireframes/fornitori-anagrafica.md index 235815e..295e8d0 100644 --- a/skill-netgescon/ui-wireframes/fornitori-anagrafica.md +++ b/skill-netgescon/ui-wireframes/fornitori-anagrafica.md @@ -1,13 +1,26 @@ # ASCII Wireframe - Gestione Fornitori & Anagrafica Accreditate (/admin-filament/gescon/anagrafica/fornitori) -## 1. VISUALIZZAZIONE DESKTOP (High-Density Multi-Column Grid) +## 0. STICKY HEADER BANNER - IMPERSONIFICAZIONE CONTESTUALE ATTIVA (Se attiva) ```text +-------------------------------------------------------------------------------------------------------------------+ -| NETGESCON - ANAGRAFICA UNIFICATA STABILI & FORNITORI [SuperAdmin: Michele] | +| ⚠️ MODALITΓ€ IMPERSONIFICAZIONE ATTIVA: Stai operando come STUDIO TORDINI CECILIA (ID #13) [ ↩️ TORNA A SUPER ADMIN ]| ++-------------------------------------------------------------------------------------------------------------------+ +``` + +--- + +## 1. TAB 1: 🏒 ELENCO FORNITORI ACCREDITATI STUDIO (#13 CECILIA TORDINI) + +```text ++-------------------------------------------------------------------------------------------------------------------+ +| NETGESCON - ANAGRAFICA UNIFICATA STABILI & FORNITORI [Studio: Cecilia Tordini]| +-------------------------------------------------------------------------------------------------------------------+ | PATH: Home > NetGescon > Anagrafica > Fornitori & Imprese Accreditate | +-------------------------------------------------------------------------------------------------------------------+ +| BARRA PULSANTINI ICONICI COMPATTI (SENZA SCROLL ORIZZONTALE): | +| [ 🏒 Elenco ] [ ✏️ Modifica (#10) ] [ πŸ“„ Fatture FE ] [ πŸ”‘ Matrice ACL ] | ++-------------------------------------------------------------------------------------------------------------------+ | | | [ + NUOVO FORNITORE ] [ πŸ”„ IMPORTA DA LEGACY MDB ] [ πŸ” Cerca per Ragione Sociale, P.IVA, CF, Tag... ] | | | @@ -16,16 +29,24 @@ ## 1. VISUALIZZAZIONE DESKTOP (High-Density Multi-Column Grid) | +----+----------------------------+-----------------+-----------------------+-------------------+-----------------+ | | ID | RAGIONE SOCIALE / IMPRESA | P.IVA / C.F. | RECAPITI MULTICANALE | CATEGORIE / TAGS | AZIONI | | +----+----------------------------+-----------------+-----------------------+-------------------+-----------------+ -| | 10 | TECNOREPAIR S.R.L. | 01234567890 | βœ‰ info@tecnorepair.it | [Idraulico] | [Modifica Scheda| -| | | | | πŸ“± 335-9988776 | [Elettricista] | [Assegna Ticket | -| | 11 | CLEAN & SHINE PULIZIE | 09876543210 | βœ‰ ordini@cleanshine.it| [Pulizie Parti C.]| [Modifica Scheda| -| | 12 | ASCENSORI ROMA NORD S.A.S. | RMCNSC65L11H501K| ☎ 06-44332211 | [Manut. Ascensore]| [Modifica Scheda| -| | 13 | EDILIZIA SUBALPINA S.R.L. | 05544332211 | βœ‰ cantiere@subalpina.it| [Edile] [Tetti] | [Modifica Scheda| +| | 10 | TECNOREPAIR S.R.L. | 01234567890 | βœ‰ info@tecnorepair.it | [Idraulico] | [✏️ Modifica] | +| | | | | πŸ“± 335-9988776 | [Elettricista] | [πŸ“„ Fatture FE] | +| | 11 | CLEAN & SHINE PULIZIE | 09876543210 | βœ‰ ordini@cleanshine.it| [Pulizie Parti C.]| [✏️ Modifica] | +| | 12 | ASCENSORI ROMA NORD S.A.S. | RMCNSC65L11H501K| ☎ 06-44332211 | [Manut. Ascensore]| [✏️ Modifica] | +| | 13 | EDILIZIA SUBALPINA S.R.L. | 05544332211 | βœ‰ cantiere@subalpina.it| [Edile] [Tetti] | [✏️ Modifica] | | +----+----------------------------+-----------------+-----------------------+-------------------+-----------------+ -| Mostrati 4 di 4 fornitori accreditati per gli stabili dell'amministratore | +| Mostrati 370 di 370 fornitori accreditati per gli stabili dello studio | ++-------------------------------------------------------------------------------------------------------------------+ +``` + +--- + +## 2. TAB 2: ✏️ SCHEDA DETTAGLIO & EDITING INLINE FORNITORE (#10 TECNOREPAIR S.R.L.) + +```text ++-------------------------------------------------------------------------------------------------------------------+ +| DETTAGLIO ED EDITING SCHEDA FORNITORE (#10 TECNOREPAIR S.R.L.) | +-------------------------------------------------------------------------------------------------------------------+ -| DETTAGLIO ED EDITING SCHEDA FORNITORE (#10 TECNOREPAIR S.R.L.) | -| | | [ Ragione Sociale: TECNOREPAIR S.R.L. ] | | [ Partita IVA: 01234567890 ] [ Codice Fiscale: 01234567890 ] | | [ Indirizzo: Via Ottaviano 45 ] [ CittΓ : ROMA ] [ CAP: 00192 ] | @@ -41,29 +62,3 @@ ## 1. VISUALIZZAZIONE DESKTOP (High-Density Multi-Column Grid) | [ SALVA SCHEDA FORNITORE ] [ ANNULLA ] [ ASSEGNA NUOVO TICKET INTERVENTO ] | +-------------------------------------------------------------------------------------------------------------------+ ``` - -## 2. VISUALIZZAZIONE RESPONSIVE MOBILE (Adaptive Collapsible Card View) - -```text -+--------------------------------------------------+ -| πŸ“± NETGESCON FORNITORI [SuperAdmin: M] | -+--------------------------------------------------+ -| ANAGRAFICA FORNITORI ACCREDITATI | -| [ + NUOVO FORNITORE ] [ πŸ” Cerca... ] | -+--------------------------------------------------+ -| πŸ› οΈ TECNOREPAIR S.R.L. (ID #10) | -| β€’ P.IVA: 01234567890 | Tags: [Idraulico] [Elect] | -| βœ‰ info@tecnorepair.it | πŸ“± 335-9988776 | -| 🏦 IBAN: IT60X0100503301000000123456 | -| ──────────────────────────────────────────────── | -| AZIONI APPARATO MOBILE: | -| [ ✏️ Modifica Scheda ] | -| [ πŸ› οΈ Assegna Ticket Intervento ] | -| [ πŸ“± Chiama subito ] [ πŸ“§ Invia Ordine ] | -+--------------------------------------------------+ -| 🧹 CLEAN & SHINE PULIZIE (ID #11) | -| β€’ P.IVA: 09876543210 | Tags: [Pulizie] | -| βœ‰ ordini@cleanshine.it | -| [ ✏️ Modifica Scheda ] | -+--------------------------------------------------+ -``` diff --git a/skill-netgescon/ui-wireframes/stabili.md b/skill-netgescon/ui-wireframes/stabili.md index 13e983a..51f92c1 100644 --- a/skill-netgescon/ui-wireframes/stabili.md +++ b/skill-netgescon/ui-wireframes/stabili.md @@ -1,45 +1,67 @@ -# ASCII Wireframe - Scheda Stabile e Dati Catastali +# ASCII Wireframe - Gestione Stabili Condominiali (/admin-filament/condomini/stabile) -URL: `http://192.168.0.205:8000/admin-filament/condomini/stabile` +## 0. STICKY HEADER BANNER - IMPERSONIFICAZIONE CONTESTUALE ATTIVA (Se attiva) ```text -+-----------------------------------------------------------------------------------------------------------------------+ -| NETGESCON Β· CENTRO STELLA [ Utente: Cecilia Tordini v ] | -+-----------------------------------------------------------------------------------------------------------------------+ -| CONDOMINI > SCHEDA STABILE | -| | -| SUPERCONDOMINIO MILIZIE 3 | -| Codice Operatore: 0021 Β· Viale delle Milizie 3 Β· Roma | -| [ Rate emesse ] [ Movimenti / Import estratto ] [ Posta stabile ] | -| | -| +-----------------------------------------------------------------------------------------------------------------+ | -| | TAB: [ Dati generali (Active) ] [ UnitΓ  ] [ Palazzine ] [ Assicurazioni ] [ Tabelle ] [ Rate ] [ Gestioni ] ... | | -| +-----------------------------------------------------------------------------------------------------------------+ | -| | -| +------------------------------------------------------+ +-------------------------------------------------------+ | -| | INFORMAZIONI GENERALI | | INDIRIZZO COMPLETO | | -| +------------------------------------------------------+ +-------------------------------------------------------+ | -| | ID Stabile: STAB-0021 | | Indirizzo: Viale delle Milizie 3 | | -| | Denominazione: SUPERCONDOMINIO MILIZIE 3 | | CittΓ : Roma | | -| | Codice Fiscale: 80234560589 | | CAP: 00192 | | -| | CF Amministratore: BRNMHL69M11H501K | | Provincia: RM | | -| | Riscaldamento: [ Attivo / Disattivo ] | | Indirizzo Completo: Viale delle Milizie 3, 00192 Roma | | -| +------------------------------------------------------+ +-------------------------------------------------------+ | -| | -| +-----------------------------------------------------------------------------------------------------------------+ | -| | DATI CATASTALI E AMMINISTRATIVI (Da Stabili.mdb e Archivio Consolidato) | | -| +-----------------------------------------------------------------------------------------------------------------+ | -| | CATASTO PRINCIPALE | CONTRIBUTI / INPS | STATISTICHE E PALAZZINE | | -| +------------------------------------------+-------------------------------+--------------------------------------+ | -| | Codice Comune: H501 (Roma) | Posizione INPS: 8493021948 | N. Condomini: 48 | | -| | Foglio: 404 | N. Contribuente: 1029482 | N. UnitΓ : 52 | | -| | Particella: 98 | Codice Destinatario SDI: 00000| N. Palazzine: 4 (A, B, C, D) | | -| | Sezione: H501 | PEC: milizie3@pec.it | | | -| +------------------------------------------+-------------------------------+--------------------------------------+ | -| | RIFERIMENTI CATASTALI AGGIUNTIVI / SECONDARI (Es. Palazzina D o Corpi Separati) [ + Aggiungi Sezione ] | | -| +------------------------------------------+-------------------------------+--------------------------------------+ | -| | - Ref #1: Palazzina D (Corpo Separato) | Foglio: 404 | Particella: 99 | Sezione: H501 | Sub: β€” | | -| | - Ref #2: Locali Commerciali Seminterrato | Foglio: 404 | Particella: 100 | Sezione: H501 | Sub: β€” | | -| +-----------------------------------------------------------------------------------------------------------------+ | -+-----------------------------------------------------------------------------------------------------------------------+ ++-------------------------------------------------------------------------------------------------------------------+ +| ⚠️ MODALITΓ€ IMPERSONIFICAZIONE ATTIVA: Stai operando come STUDIO TORDINI CECILIA (ID #13) [ ↩️ TORNA A SUPER ADMIN ]| ++-------------------------------------------------------------------------------------------------------------------+ +``` + +--- + +## 1. TAB 1: 🏒 ELENCO STABILI CONDOMINIALI + +```text ++-------------------------------------------------------------------------------------------------------------------+ +| NETGESCON - CENTRO STELLA SYSTEM MANAGEMENT [SuperAdmin: Michele] | ++-------------------------------------------------------------------------------------------------------------------+ +| PATH: Home > Condomini > Gestione Stabili | ++-------------------------------------------------------------------------------------------------------------------+ +| BARRA PULSANTINI ICONICI COMPATTI (SENZA SCROLL ORIZZONTALE): | +| [ 🏒 Elenco ] [ ✏️ Modifica (#15) ] [ πŸ›οΈ Catasto ] [ 🏦 Conti & Casse ] [ πŸ”‘ Matrice ACL ] | ++-------------------------------------------------------------------------------------------------------------------+ +| | +| [ + NUOVO STABILE ] [ πŸ”„ SYNC DA STABILI.MDB ] [ πŸ” Cerca per Codice, Denominazione, Codice Fiscale... ] | +| | +| +------+----------------------------------------+---------------+--------------------------------+----------------+ +| | COD. | DENOMINAZIONE STABILE CONDOMINIALE | CODICE FISCALE| BANCA PRINCIPALE & IBAN | CASSE | +| +------+----------------------------------------+---------------+--------------------------------+----------------+ +| | 0010 | CATONE 34 - GERMANICO 85 - GRACCHI 32 | 80017140585 | ISTITUTO SAN PAOLO | [CCB] [CCP] | +| | | | | IT26Z0306905077100000013753 | [CON] [CAG] | +| | 0013 | OTTAVIANO 105 - GIULIO CESARE 171 | 80212560587 | BANCO BPM | [CON] | +| | | | | IT88A0503403214000000000707 | | +| | 0016 | GERMANICO 96 | 80115200588 | BANCA DEL FUCINO | [CCB] [CCP] | +| | | | | IT48W0312403203000000233378 | [CON] | +| | 0021 | SUPERCONDOMINIO MILIZIE 3 | 97487690584 | UNICREDIT | [CCB] [CON] | +| | | | | IT30Q0200805170000104951005 | | +| +------+----------------------------------------+---------------+--------------------------------+----------------+ +| Mostrati 16 di 16 stabili censiti gestiti dallo studio | ++-------------------------------------------------------------------------------------------------------------------+ +``` + +--- + +## 2. TAB 2: ✏️ SCHEDA DETTAGLIO & EDITING INLINE STABILE (#0010 CATONE 34) + +```text ++-------------------------------------------------------------------------------------------------------------------+ +| DETTAGLIO ED EDITING SCHEDA STABILE CONDOMINIALE (#0010 CATONE 34 - GERMANICO 85 - GRACCHI 32) | ++-------------------------------------------------------------------------------------------------------------------+ +| [ Codice Stabile: 0010 ] [ Codice Fiscale: 80017140585 ] | +| [ Denominazione: CATONE 34 - GERMANICO 85 - GRACCHI 32 ] | +| [ Indirizzo: VIA CATONE 34 ] [ CittΓ : ROMA ] [ CAP: 00192 ] [ PR: RM ] | +| [ Num. UnitΓ  Immobiliari: 48 ] [ Num. Scale: 3 ] [ Anno Gestione Attivo: 2024 ] | +| | +| BANCA PRINCIPALE E COORDINATE BANCARIE: | +| β€’ Istituto Bancario: ISTITUTO SAN PAOLO | +| β€’ IBAN Principale: IT26Z0306905077100000013753 | +| | +| TABELLA ANAGR_CASSE AGGANCIATE: | +| β€’ [CCB] Conto Corrente Bancario (Saldo: 0.00 EUR) | +| β€’ [CCP] C corrente Postale n. 50581008 (Saldo: -2861.24 EUR) | +| β€’ [CON] Cassa Contanti (Saldo: 0.00 EUR) | +| | +| [ SALVA SCHEDA STABILE ] [ ANNULLA ] [ πŸ›οΈ APRI CATASTO STABILE ] | ++-------------------------------------------------------------------------------------------------------------------+ ```