Correzioni per funzionamento API

This commit is contained in:
Dasc3er 2021-02-19 16:17:22 +01:00 committed by Thomas Zilio
parent e6e508b96f
commit 83a0652f71
14 changed files with 60 additions and 45 deletions

View File

@ -17,9 +17,6 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// 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');

View File

@ -435,7 +435,7 @@ if (auth()->check()) {
<i class="fa fa-info"></i>
</a></li>
<li class="nav-button"><a href="'.base_url().'/index.php?op=logout" onclick="sessionStorage.clear()" class="bg-red tip" title="'.tr('Esci').'">
<li class="nav-button"><a href="'.route('logout').'" onclick="sessionStorage.clear()" class="bg-red tip" title="'.tr('Esci').'">
<i class="fa fa-power-off"></i>
</a></li>
</ul>

View File

@ -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;
}

View File

@ -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`,

View File

@ -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 = [];

View File

@ -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', [

View File

@ -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,

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -43,6 +43,6 @@ class Resource
public function getUser()
{
return auth()->getUser();
return auth()->user();
}
}

View File

@ -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;
}
/**

View File

@ -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');

View File

@ -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) {