Miglioramento della documentazione
This commit is contained in:
parent
10da3933ca
commit
396524eb50
|
@ -1,22 +1,30 @@
|
|||
<?php
|
||||
|
||||
// Impostazioni di base per l'accesso al database
|
||||
$db_host = '|host|';
|
||||
$db_username = '|username|';
|
||||
$db_password = '|password|';
|
||||
$db_name = '|database|';
|
||||
|
||||
// Percorso della cartella di backup
|
||||
$backup_dir = __DIR__.'/backup/';
|
||||
|
||||
// Tema selezionato per il front-end
|
||||
$theme = 'default';
|
||||
|
||||
// Redirect automatico delle richieste da HTTP a HTTPS
|
||||
$redirectHTTPS = false;
|
||||
|
||||
// Impostazioni di debug
|
||||
$debug = false;
|
||||
$strict = false;
|
||||
|
||||
// Personalizzazione dei gestori dei tag personalizzati
|
||||
$HTMLWrapper = null;
|
||||
$HTMLHandlers = [];
|
||||
$HTMLManagers = [];
|
||||
|
||||
// Lingua del progetto
|
||||
$lang = 'it';
|
||||
// Personalizzazione della formattazione di date e numeri
|
||||
$formatter = [];
|
||||
|
|
73
docs/API.md
73
docs/API.md
|
@ -8,14 +8,18 @@ currentMenu: api
|
|||
>
|
||||
> \-- <cite>[Wikipedia](https://it.wikipedia.org/wiki/Application_programming_interface)</cite>
|
||||
|
||||
L'API del progetto è attualmente ancora in sviluppo, e pertanto le funzioni disponibili potrebbero essere piuttosto ridotte. Di seguito sono elencate le basi per connettersi al sistema e ottenere i dati a cui si è interessati.
|
||||
L'API del progetto è attualmente ancora in sviluppo, e pertanto le funzioni disponibili potrebbero essere piuttosto ridotte.
|
||||
Di seguito sono elencate le basi per connettersi al sistema e ottenere i dati a cui si è interessati.
|
||||
|
||||
<!-- TOC depthFrom:2 depthTo:6 orderedList:false updateOnSave:true withLinks:true -->
|
||||
|
||||
- [Accesso](#accesso)
|
||||
- [Standard di comunicazione](#standard-di-comunicazione)
|
||||
- [Ottenere la chiave](#ottenere-la-chiave)
|
||||
- [Formato dei componenti](#formato-dei-componenti)
|
||||
- [Output](#output)
|
||||
- [Messaggi](#messaggi)
|
||||
- [Formato dei componenti](#formato-dei-componenti)
|
||||
- [Stati](#stati)
|
||||
- [Lettura](#lettura)
|
||||
- [Personalizzazione](#personalizzazione)
|
||||
- [Richieste di lettura](#richieste-di-lettura)
|
||||
- [Interventi](#interventi)
|
||||
- [Anagrafiche](#anagrafiche)
|
||||
|
@ -25,29 +29,38 @@ L'API del progetto è attualmente ancora in sviluppo, e pertanto le funzioni dis
|
|||
|
||||
<!-- /TOC -->
|
||||
|
||||
## Accesso
|
||||
## Standard di comunicazione
|
||||
|
||||
L'accesso all'API viene effettuato concatenendo la chiave dell'utenza all'URL del sito su cui è ospitato il progetto.
|
||||
Il funzionamento dell'API si basa fondamentalmente sull'utilizzo di una chiave di accesso, ospitata all'interno della tabella `zz_tokens` del database del progetto, univoca per ogni istanza dell'utente.
|
||||
|
||||
http://<url_osm>/api/?token=<token>
|
||||
Ogni richiesta all'API deve contenere la chiave di accesso (campo `token`) e l'operazione richiesta (campo `resource`), inserendo questi elementi tra gli ulteriori contenuti che si intendono inviare.
|
||||
I contenuti della richiesta devono quindi essere convertiti in formato JSON ed inviati all'API secondo uno specifico schema:
|
||||
|
||||
La chiave di accesso è ottenibile eseguendo la seguente query all'interno del database del progetto:
|
||||
- `POST` - Richieste di creazione (**Create**).
|
||||
- `GET` - Richieste di informazioni (**Retrieve**).
|
||||
- `PUT` - Richieste di modifica (**Update**).
|
||||
- `DELETE` - Richieste di eliminazione (**Delete**).
|
||||
|
||||
```sql
|
||||
SELECT `token` FROM `zz_tokens` WHERE `id_utente` = <id_utente>
|
||||
```
|
||||
### Ottenere la chiave
|
||||
|
||||
La chiave di accesso può essere ottenuta sfruttando l'operazione di accesso nativa dell'API, che prevede l'invio di una richiesta **POST** corrispondente alla seguente struttura:
|
||||
|
||||
- `resource` - login.
|
||||
- `username` - <username dell'account>.
|
||||
- `password` - <password dell'account>.
|
||||
|
||||
### Formato dei componenti
|
||||
|
||||
I seguenti componenti delle richieste devono seguire una rigida struttura:
|
||||
|
||||
- `page` - intero.
|
||||
- `upd` - yyyy-MM-dd hh:mm:ss.
|
||||
|
||||
## Output
|
||||
|
||||
L'API del progetto permette di ottenere le informazioni attraverso un array in formato JSON.
|
||||
Per poter interpretare correttamente i dati, si devono ignorare gli indici numerici di primo livello (non rilevanti all'interno del formato) e sfruttare in particolare i seguenti campi generici:
|
||||
|
||||
- `records`, rappresentante il numero totale dei record richiesti;
|
||||
- `pages`, indicante il numero totale della pagine disponibili.
|
||||
|
||||
Si ricorda che l'API prevede la restituzione di un insieme di dati limitato rispetto alla richiesta effettuatua: per ottenere l'intero insieme di informazioni è necessario eseguire molteplici richieste consecutive basate sul campo `page`.
|
||||
|
||||
## Messaggi
|
||||
### Stati
|
||||
|
||||
Ogni richiesta effettuata all'API viene accompagnata da un messaggio predefinito che permette di interpretare in modo più preciso la risposta.
|
||||
In particolare, sono presenti i seguenti _status_:
|
||||
|
@ -57,13 +70,29 @@ In particolare, sono presenti i seguenti _status_:
|
|||
- `401: Non autorizzato` - Accesso non autorizzato.
|
||||
- `404: Non trovato` - La risorsa richiesta non risulta disponibile.
|
||||
- `500: Errore del server` - Il gestionale non è in grado di completare la richiesta.
|
||||
- `503: Servizio non disponibile` - L'API del gestionale non è abilitata.
|
||||
|
||||
## Formato dei componenti
|
||||
### Lettura
|
||||
|
||||
I seguenti componenti delle richieste devono seguire una rigida struttura:
|
||||
Le richieste di lettura sono solitamente completate con l'invio di un numero predefinito di informazioni.
|
||||
Per poter interpretare correttamente i dati, si devono ignorare gli indici numerici di primo livello (non rilevanti all'interno del formato) e sfruttare in particolare i seguenti campi generici:
|
||||
|
||||
- `page` (intero).
|
||||
- `upd` (yyyy-MM-dd hh:mm:ss).
|
||||
- `records`, rappresentante il numero totale dei record richiesti;
|
||||
- `pages`, indicante il numero totale della pagine disponibili.
|
||||
|
||||
Si ricorda che l'API prevede la restituzione di un insieme di dati limitato rispetto alla richiesta effettuatua: per ottenere l'intero insieme di informazioni è necessario eseguire molteplici richieste consecutive basate sul campo `page`.
|
||||
|
||||
## Personalizzazione
|
||||
|
||||
L'API sfrutta una struttura modulare per poter funzionare in modo completo e garantire al tempo stesso il possibile ampliamento delle sue funzioni.
|
||||
In particolare, ogni modulo può specificare una determinata serie di operazioni che lo riguardano e che possono essere richiamate in vari modi.
|
||||
|
||||
Di seguito lo schema attraverso cui l'API individua la presenza delle possibili richieste supportate dai moduli (cartelle **api/** e **custom/api/**):
|
||||
|
||||
- `POST` - File `create.php`.
|
||||
- `GET` - File `eetrieve.php`.
|
||||
- `PUT` - File `update.php`.
|
||||
- `DELETE` - File `delete.php`.
|
||||
|
||||
## Richieste di lettura
|
||||
|
||||
|
|
|
@ -377,6 +377,7 @@ class Auth extends \Util\Singleton
|
|||
|
||||
if (!isset(self::$is_brute)) {
|
||||
$results = $database->fetchArray('SELECT COUNT(*) AS tot FROM zz_logs WHERE ip = '.prepare(get_client_ip()).' AND stato = '.prepare(self::getStatus()['failed']['code']).' AND DATE_ADD(created_at, INTERVAL '.self::$brute['timeout'].' SECOND) >= NOW()');
|
||||
|
||||
self::$is_brute = $results[0]['tot'] > self::$brute['attemps'];
|
||||
}
|
||||
|
||||
|
|
|
@ -328,6 +328,30 @@ if (!empty($records[0]['idcontratto_prev'])) {
|
|||
}
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
$('#data_accettazione').on("dp.change", function(){
|
||||
if($(this).val()){
|
||||
$('#data_rifiuto').attr('disabled', true);
|
||||
}else{
|
||||
$('#data_rifiuto').attr('disabled', false);
|
||||
}
|
||||
});
|
||||
|
||||
$('#data_rifiuto').on("dp.change", function(){
|
||||
console.log($(this).val());
|
||||
if($(this).val()){
|
||||
$('#data_accettazione').attr('disabled', true);
|
||||
}else{
|
||||
$('#data_accettazione').attr('disabled', false);
|
||||
}
|
||||
});
|
||||
|
||||
$("#data_accettazione").trigger("dp.change");
|
||||
$("#data_rifiuto").trigger("dp.change");
|
||||
});
|
||||
</script>
|
||||
|
||||
<a class="btn btn-danger ask" data-backto="record-list">
|
||||
<i class="fa fa-trash"></i> <?php echo _('Elimina'); ?>
|
||||
</a>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
switch ($resource) {
|
||||
case 'login':
|
||||
// Controllo sulle credenziali
|
||||
if (Auth::getInstance()->attempt($request['username'], $request['password'])) {
|
||||
$user = Auth::user();
|
||||
|
||||
|
@ -17,6 +18,7 @@ switch ($resource) {
|
|||
$token = $tokens[0]['token'];
|
||||
}
|
||||
|
||||
// Informazioni da restituire tramite l'API
|
||||
$results = $dbo->fetchArray('SELECT `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` = '.prepare($user['id_utente']))[0];
|
||||
|
||||
$results['token'] = $token;
|
||||
|
@ -25,6 +27,7 @@ switch ($resource) {
|
|||
'status' => API::getStatus()['unauthorized']['code'],
|
||||
];
|
||||
|
||||
// Se è in corso un brute-force, aggiunge il timeout
|
||||
if (Auth::isBrute()) {
|
||||
$results['timeout'] = Auth::getBruteTimeout();
|
||||
}
|
||||
|
@ -32,6 +35,7 @@ switch ($resource) {
|
|||
|
||||
break;
|
||||
|
||||
// Operazione di logout
|
||||
case 'logout':
|
||||
if (!empty($request['token']) && !empty($user)) {
|
||||
$database->query('DELETE FROM `zz_tokens` WHERE `token` = '.prepare($request['token']).' AND `id_utente` = '.prepare($user['id_utente']));
|
||||
|
@ -46,4 +50,5 @@ switch ($resource) {
|
|||
|
||||
return [
|
||||
'login',
|
||||
'logout',
|
||||
];
|
||||
|
|
Loading…
Reference in New Issue