. */ include_once __DIR__.'/core.php'; // Controllo accesso tramite token if (!AuthOSM::check() && empty($_SESSION['token_user'])) { redirect_url(base_path_osm().'/index.php?op=logout'); exit; } // Verifica che sia un accesso tramite token if (!Permissions::isTokenAccess()) { redirect_url(base_path_osm().'/index.php?op=logout'); exit; } // Se c'è un utente associato, redirect al normale editor.php if (!empty($_SESSION['id_utente'])) { $token_info = $_SESSION['token_access']; if (!empty($token_info['id_module_target']) && !empty($token_info['id_record_target'])) { redirect_url(base_path_osm().'/editor.php?id_module='.$token_info['id_module_target'].'&id_record='.$token_info['id_record_target']); } else { redirect_url(base_path_osm().'/index.php?op=logout'); } exit; } // Verifica che il token abbia le informazioni necessarie $token_info = $_SESSION['token_access']; if (empty($token_info['id_module_target']) || empty($token_info['id_record_target'])) { flash()->error(tr('Token non configurato correttamente per l\'accesso diretto')); redirect_url(base_path_osm().'/index.php?op=logout'); exit; } $id_module = $token_info['id_module_target']; $id_record = $token_info['id_record_target']; // Verifica se l'utente sta cercando di accedere a un modulo o record diverso tramite URL $requested_module = filter('id_module'); $requested_record = filter('id_record'); if (!empty($requested_module) && $requested_module != $id_module) { // Redirect al modulo autorizzato redirect_url(base_path_osm().'/shared_editor.php?id_module='.$id_module.'&id_record='.$id_record); exit; } if (!empty($requested_record) && $requested_record != $id_record) { // Redirect al record autorizzato redirect_url(base_path_osm().'/shared_editor.php?id_module='.$id_module.'&id_record='.$id_record); exit; } // Verifica che il modulo esista e sia abilitato $module = Modules::get($id_module); if (empty($module) || !$module['enabled']) { flash()->error(tr('Modulo non disponibile')); redirect_url(base_path_osm().'/index.php?op=logout'); exit; } // Verifica permessi del token per questo modulo if (!Permissions::checkTokenPermissions()) { flash()->error(tr('Accesso negato')); redirect_url(base_path_osm().'/index.php?op=logout'); exit; } // Verifica permessi del token per questo record if (!Permissions::checkTokenRecordAccess($id_record)) { flash()->error(tr('Accesso al record negato')); redirect_url(base_path_osm().'/index.php?op=logout'); exit; } // Ottieni la struttura del modulo $structure = Modules::get($id_module); // Variabili per la compatibilità con i moduli $id_parent = $id_record; $id_plugin = null; // Carica il file init.php del modulo se esiste $init_file = App::filepath('modules/'.$module['directory'].'|custom|', 'init.php'); if (file_exists($init_file)) { include_once $init_file; // Registrazione del record per HTMLBuilder (per la sostituzione dei placeholder $nome$) HTMLBuilder\HTMLBuilder::setRecord($record); } // Determina se caricare edit e actions in base ai permessi $current_permission = $token_info['permessi'] ?? 'r'; $load_module_content = !in_array($current_permission, ['ra', 'rwa']); // Imposta la variabile read_only per la compatibilità con i moduli $read_only = $current_permission == 'r'; // Altre variabili necessarie per la compatibilità $rootdir = base_path_osm(); $docroot = base_dir(); $tour_file = base_dir().'/modules/'.$structure->directory.'/js/'.$structure->directory.'-tour.js'; $tour_url = $rootdir.'/modules/'.$structure->directory.'/js/'.$structure->directory.'-tour.js'; if ($load_module_content) { // Gestione delle operazioni POST solo per permessi r e rw if (!empty(filter('op'))) { $actions_file = App::filepath('modules/'.$module['directory'].'|custom|', 'actions.php'); if (file_exists($actions_file)) { include_once $actions_file; // Gestione del redirect in base al tipo di salvataggio $backto = filter('backto'); if ($backto == 'shared-editor-close') { // Redirect alla pagina di logout per chiudere la sessione token redirect_url(base_path_osm().'/index.php?op=logout'); } else { // Redirect normale per evitare re-submit redirect_url(base_path_osm().'/shared_editor.php?id_module='.$id_module.'&id_record='.$id_record); } exit; } } } // Imposta il titolo della pagina in base ai permessi $permission_titles = [ 'r' => tr('Visualizzazione'), 'rw' => tr('Modifica'), 'ra' => tr('Caricamento Allegati'), 'rwa' => tr('Gestione Allegati'), ]; $permission_info = [ 'r' => tr('Hai accesso in sola lettura: puoi consultare tutte le informazioni e i dettagli presenti, ma non potrai apportare modifiche o salvare cambiamenti'), 'rw' => tr('Hai accesso completo ai dati: puoi visualizzare tutte le informazioni e modificarle, salvando i cambiamenti quando necessario'), 'ra' => tr('Hai accesso per caricare gli allegati: puoi caricare, consultare e scaricare tutti i documenti presenti'), 'rwa' => tr('Hai accesso completo alla gestione documenti: puoi visualizzare, caricare, modificare ed eliminare allegati'), ]; $pageTitle = tr($structure->getTranslation('title')).' - '.$permission_titles[$current_permission]; // Navbar custom prima di top.php echo ' '; include_once App::filepath('include|custom|', 'top.php'); // CSS personalizzato per l'interfaccia semplificata echo '