diff --git a/core.php b/core.php index 5dd78ae10..8136aa9d9 100755 --- a/core.php +++ b/core.php @@ -17,9 +17,6 @@ * along with this program. If not, see . */ -// Rimozione header X-Powered-By -header_remove('X-Powered-By'); - // Impostazioni di configurazione PHP date_default_timezone_set('Europe/Rome'); @@ -71,7 +68,7 @@ use Monolog\Handler\RotatingFileHandler; use Monolog\Handler\StreamHandler; $handlers = []; -if (!API\Response::isAPIRequest()) { +if (!$api_request) { // File di log di base (logs/error.log, logs/setup.log) $handlers[] = new StreamHandler(base_dir().'/logs/error.log', Monolog\Logger::ERROR); $handlers[] = new StreamHandler(base_dir().'/logs/setup.log', Monolog\Logger::EMERGENCY); @@ -153,7 +150,7 @@ $revision = Update::getRevision(); /* ACCESSO E INSTALLAZIONE */ // Controllo sulla presenza dei permessi di accesso basilari -$continue = $dbo->isInstalled() && !Update::isUpdateAvailable() && (auth()->check() || API\Response::isAPIRequest()); +$continue = $dbo->isInstalled() && !Update::isUpdateAvailable() && (auth()->check() || $api_request); if (!empty($skip_permissions)) { Permissions::skip(); @@ -170,7 +167,7 @@ if (!$continue && getURLPath() != slashes(base_url().'/index.php') && !Permissio /* INIZIALIZZAZIONE GENERALE */ // Operazione aggiuntive (richieste non API) -if (!API\Response::isAPIRequest()) { +if (!$api_request) { // Impostazioni di Content-Type e Charset Header header('Content-Type: text/html; charset=UTF-8'); diff --git a/include/top.php b/include/top.php index d25ae0d5f..08e23ffe9 100755 --- a/include/top.php +++ b/include/top.php @@ -435,7 +435,7 @@ if (auth()->check()) { - diff --git a/index.php b/index.php index 2d242be12..53dc2bb29 100755 --- a/index.php +++ b/index.php @@ -42,8 +42,7 @@ switch ($op) { //flash()->error(auth()->getStatus()[$status]['message']); - redirect_legacy(base_url().'/index.php'); - throw new \App\Exceptions\LegacyExitException(); + redirect('/'); } break; @@ -51,8 +50,7 @@ switch ($op) { case 'logout': auth()->logout(); - redirect_legacy(base_url().'/index.php'); - throw new \App\Exceptions\LegacyExitException(); + redirect(route('login')); break; } diff --git a/modules/interventi/src/API/v1/Interventi.php b/modules/interventi/src/API/v1/Interventi.php index fd62191a5..741530c91 100755 --- a/modules/interventi/src/API/v1/Interventi.php +++ b/modules/interventi/src/API/v1/Interventi.php @@ -38,7 +38,7 @@ class Interventi extends Resource implements RetrieveInterface, CreateInterface, $today = date('Y-m-d'); $period_end = date('Y-m-d', strtotime($today.' +7 days')); $period_start = date('Y-m-d', strtotime($today.' -2 months')); - $user = auth()->user(); + $user = $this->getUser(); // AND `in_statiintervento`.`is_completato`=0 $query = "SELECT `in_interventi`.`id`, diff --git a/modules/utenti/info.php b/modules/utenti/info.php index c4a1e06d1..c4f46895f 100755 --- a/modules/utenti/info.php +++ b/modules/utenti/info.php @@ -29,7 +29,9 @@ if (post('op') == 'self_update') { } $user = auth()->user(); -$token = auth()->getToken(); + +$tokens = $user->getApiTokens(); +$token = $tokens[0]['token']; $rs = $dbo->fetchArray('SELECT * FROM an_anagrafiche WHERE idanagrafica = '.prepare($user['idanagrafica'])); $anagrafica = []; diff --git a/modules/utenti/src/API/v1/Login.php b/modules/utenti/src/API/v1/Login.php index 0b8bf6892..8eb2b5701 100755 --- a/modules/utenti/src/API/v1/Login.php +++ b/modules/utenti/src/API/v1/Login.php @@ -32,9 +32,11 @@ class Login extends Resource implements CreateInterface $database = database(); // Controllo sulle credenziali - if (auth()->attempt($request['username'], $request['password'])) { + if (auth()->once(['username' => $request['username'], 'password' => $request['password']])) { $user = $this->getUser(); - $token = auth()->getToken(); + + $tokens = $user->getApiTokens(); + $token = $tokens[0]['token']; // Informazioni da restituire tramite l'API $response['user'] = $database->fetchOne('SELECT `an_anagrafiche`.`idanagrafica` AS idanagrafica, `ragione_sociale`, `codice`, `piva`, `codice_fiscale`, `indirizzo`, `citta`, `provincia`, (SELECT `nome` FROM `an_nazioni` WHERE `an_nazioni`.`id` = `an_anagrafiche`.`id_nazione`) AS nazione, `telefono`, `fax`, `cellulare`, `an_anagrafiche`.`email` FROM `zz_users` LEFT JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica` WHERE `id` = :id', [ diff --git a/src/API/App/v1/Interventi.php b/src/API/App/v1/Interventi.php index 5b67b9453..3fceee4f1 100644 --- a/src/API/App/v1/Interventi.php +++ b/src/API/App/v1/Interventi.php @@ -56,7 +56,7 @@ class Interventi extends AppResource $remove_start = $remove_end->copy()->subMonths(2); // Informazioni sull'utente - $id_tecnico = auth()->user()->id_anagrafica; + $id_tecnico = $this->getUser()->id_anagrafica; $query = 'SELECT in_interventi.id FROM in_interventi WHERE deleted_at IS NOT NULL @@ -97,7 +97,7 @@ class Interventi extends AppResource $end = $date['end']; // Informazioni sull'utente - $id_tecnico = auth()->user()->id_anagrafica; + $id_tecnico = $this->getUser()->id_anagrafica; $query = 'SELECT in_interventi.id, diff --git a/src/API/App/v1/Login.php b/src/API/App/v1/Login.php index 63a287bfd..0eefed731 100644 --- a/src/API/App/v1/Login.php +++ b/src/API/App/v1/Login.php @@ -32,9 +32,11 @@ class Login extends Resource implements CreateInterface $database = database(); // Controllo sulle credenziali - if (auth()->attempt($request['username'], $request['password'])) { + if (auth()->once(['username' => $request['username'], 'password' => $request['password']])) { $user = $this->getUser(); - $token = auth()->getToken(); + + $tokens = $user->getApiTokens(); + $token = $tokens[0]['token']; // Informazioni sull'utente, strettamente collegato ad una anagrafica di tipo Tecnico $utente = $database->fetchOne("SELECT diff --git a/src/API/App/v1/RigheInterventi.php b/src/API/App/v1/RigheInterventi.php index 162a7ff45..c06a5be3f 100644 --- a/src/API/App/v1/RigheInterventi.php +++ b/src/API/App/v1/RigheInterventi.php @@ -41,7 +41,7 @@ class RigheInterventi extends AppResource $end = $today->copy()->addMonth(1); // Informazioni sull'utente - $user = auth()->user(); + $user = $this->getUser(); $id_tecnico = $user->id_anagrafica; // Elenco di interventi di interesse @@ -75,7 +75,7 @@ class RigheInterventi extends AppResource $end = $today->copy()->addMonth(1); // Informazioni sull'utente - $user = auth()->user(); + $user = $this->getUser(); $id_tecnico = $user->id_anagrafica; // Elenco di interventi di interesse diff --git a/src/API/App/v1/SessioniInterventi.php b/src/API/App/v1/SessioniInterventi.php index b42c543b3..d970352b5 100644 --- a/src/API/App/v1/SessioniInterventi.php +++ b/src/API/App/v1/SessioniInterventi.php @@ -37,7 +37,7 @@ class SessioniInterventi extends AppResource $end = $today->copy()->addMonth(1); // Informazioni sull'utente - $user = auth()->user(); + $user = $this->getUser(); $id_tecnico = $user->id_anagrafica; // Elenco di interventi di interesse @@ -76,7 +76,7 @@ class SessioniInterventi extends AppResource $end = $today->copy()->addMonth(1); // Informazioni sull'utente - $user = auth()->user(); + $user = $this->getUser(); $id_tecnico = $user->id_anagrafica; // Elenco di interventi di interesse @@ -139,7 +139,7 @@ class SessioniInterventi extends AppResource public function createRecord($data) { // Informazioni sull'utente - $user = auth()->user(); + $user = $this->getUser(); $id_tecnico = $user->id_anagrafica; // Informazioni di base diff --git a/src/API/Resource.php b/src/API/Resource.php index 6b72f9de4..3ea307666 100755 --- a/src/API/Resource.php +++ b/src/API/Resource.php @@ -43,6 +43,6 @@ class Resource public function getUser() { - return auth()->getUser(); + return auth()->user(); } } diff --git a/src/API/Response.php b/src/API/Response.php index 805e4d5c8..36e9b3ad1 100755 --- a/src/API/Response.php +++ b/src/API/Response.php @@ -22,9 +22,11 @@ namespace API; use API\Exceptions\InternalError; use API\Exceptions\ResourceNotFound; use API\Exceptions\ServiceError; +use App\Models\User; use Auth; use Exception; use Filter; +use Illuminate\Support\Facades\Request; use Models\ApiResource as Resource; /** @@ -96,6 +98,20 @@ class Response $request = self::getRequest(); $version = $request['version']; + // Login sulla base del token + if (!empty($request['token'])) { + $token = $request['token']; + + $user = database()->fetchArray('SELECT `id_utente` FROM `zz_tokens` WHERE `enabled` = 1 AND `token` = :token', [ + ':token' => $token, + ]); + + $id = !empty($user) ? $user[0]['id_utente'] : null; + if (!empty($id)) { + auth()->onceUsingId($id); + } + } + // Controllo sull'accesso if (!auth()->check() && $request['resource'] != 'login') { return self::response([ @@ -224,31 +240,28 @@ class Response */ public static function getRequest($raw = false) { - $request = []; + $request = Request::instance(); + $content = $request->getContent(); - if (self::isAPIRequest()) { - $request = file_get_contents('php://input'); + if (empty($raw)) { + $content = $request->all(); + $content = Filter::sanitize($content); - if (empty($raw)) { - $request = (array) json_decode($request, true); - $request = Filter::sanitize($request); + // Fallback per input standard vuoto (richiesta da browser o upload file) + if (empty($content)) { // $_SERVER['REQUEST_METHOD'] == 'GET' + $content = $request->query(); + } - // Fallback per input standard vuoto (richiesta da browser o upload file) - if (empty($request)) { // $_SERVER['REQUEST_METHOD'] == 'GET' - $request = Filter::getGET(); - } + if (empty($content['token'])) { + $content['token'] = ''; + } - if (empty($request['token'])) { - $request['token'] = ''; - } - - if (empty($request['version'])) { - $request['version'] = 'v1'; - } + if (empty($content['version'])) { + $content['version'] = 'v1'; } } - return $request; + return $content; } /** diff --git a/src/Models/Module.php b/src/Models/Module.php index c9561c28b..d32f2c4f6 100755 --- a/src/Models/Module.php +++ b/src/Models/Module.php @@ -68,6 +68,7 @@ class Module extends Model { if (!isset($this->variables[$id_record])) { $dbo = $database = database(); + $variables = []; // Lettura delle variabili nei singoli moduli $path = $this->filepath('variables.php'); diff --git a/src/Prints.php b/src/Prints.php index 773a3979c..ab15d4eeb 100755 --- a/src/Prints.php +++ b/src/Prints.php @@ -545,8 +545,8 @@ class Prints // Inclusione dei fogli di stile CSS $styles = [ - App::filepath('templates/base|custom|', 'bootstrap.css'), - App::filepath('templates/base|custom|', 'style.css'), + AppLegacy::filepath('templates/base|custom|', 'bootstrap.css'), + AppLegacy::filepath('templates/base|custom|', 'style.css'), ]; foreach ($styles as $value) {