public function __invoke($req, $res, $next) { $token = Auth::getToken($req); /* * Il token può essere false in una delle seguenti circostanze * 1-nessun header di autenticazione inviato con la richiesta * 2-il token non è valido */ if (!$token) { return $res->withStatus(401)->write(JsonHelper::fail('Impossibile autenticare il token.')); } /* * Verifico che il token sia del tipo atteso */ $payloadAtteso = ['id_utenza', 'tipologia']; foreach ($payloadAtteso as $k) { if (!isset($token->{$k})) { return $res->withStatus(401)->write(JsonHelper::fail('Il token ha un payload non conforme alle aspettative.')); } } /* * Se il token è corretto, verifico che il payload id_utenza * faccia riferimento ad un utente realmente esistente */ $result = Store::getUtenzaById($token->id_utenza); if (!$result) { return $res->withStatus(404)->write(JsonHelper::fail('Utente inesistente.')); } /* * Imposto gli argomenti dell'utenza corrente */ $route = $req->getAttributes()['route']; $route->setArgument('_id_utenza', (string) $result['id']); $route->setArgument('_tipologia', $result['tipologia']); return $next($req, $res); }
$app->get('/catalog[/{table}]', function ($req, $res, $args) { $table = isset($args['table']) ? $args['table'] : null; $result = Store::catalog($table); if (!$result) { return $res->withStatus(404)->write(JsonHelper::fail('Tabella inesistente.')); } return $res->write(JsonHelper::success($result)); }); /** * */ $app->post('/autenticazione', function ($req, $res) { $body = $req->getParsedBody(); $codiceFiscale = isset($body['codice_fiscale']) ? $body['codice_fiscale'] : ''; $password = isset($body['password']) ? $body['password'] : ''; $result = Auth::authenticate($codiceFiscale, $password); if (!$result) { return $res->withStatus(403)->write(JsonHelper::fail('Codice Fiscale e/o Password errati.')); } return $res->write(JsonHelper::success($result)); }); /** * */ $app->get('/profilo/{id_utenza:\\d}', function ($req, $res, $args) { $idUtenza = $args['id_utenza']; $tipologia = $args['_tipologia']; $queryParams = $req->getQueryParams(); $incsQuery = isset($queryParams['include']) ? $queryParams['include'] : ''; $result = Store::getProfilo($idUtenza, $tipologia, $incsQuery); $res->write(JsonHelper::success($result));