2017-09-01 18:13:25 +02:00
< ? php
switch ( $resource ) {
case 'login' :
2017-09-04 11:53:30 +02:00
// Controllo sulle credenziali
2017-09-01 18:13:25 +02:00
if ( Auth :: getInstance () -> attempt ( $request [ 'username' ], $request [ 'password' ])) {
$user = Auth :: user ();
// Generazione del token per l'utente
$tokens = $database -> fetchArray ( 'SELECT `token` FROM `zz_tokens` WHERE `enabled` = 1 AND `id_utente` = ' . prepare ( $user [ 'id_utente' ]));
if ( empty ( $tokens )) {
$token = secure_random_string ();
2017-09-04 16:04:45 +02:00
2017-09-01 18:13:25 +02:00
$database -> insert ( 'zz_tokens' , [
'id_utente' => $user [ 'id_utente' ],
'token' => $token ,
]);
} else {
$token = $tokens [ 0 ][ 'token' ];
}
2017-09-04 11:53:30 +02:00
// Informazioni da restituire tramite l'API
2017-09-04 10:24:44 +02:00
$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 ];
2017-09-01 18:13:25 +02:00
$results [ 'token' ] = $token ;
2017-09-04 10:24:44 +02:00
} else {
$results = [
'status' => API :: getStatus ()[ 'unauthorized' ][ 'code' ],
];
2017-09-04 11:53:30 +02:00
// Se è in corso un brute-force, aggiunge il timeout
2017-09-04 10:24:44 +02:00
if ( Auth :: isBrute ()) {
$results [ 'timeout' ] = Auth :: getBruteTimeout ();
}
}
break ;
2017-09-04 11:53:30 +02:00
// Operazione di logout
2017-09-04 10:24:44 +02:00
case 'logout' :
if ( ! empty ( $request [ 'token' ]) && ! empty ( $user )) {
2017-09-04 16:04:45 +02:00
// Cancellazione della chiave
2017-09-04 10:24:44 +02:00
$database -> query ( 'DELETE FROM `zz_tokens` WHERE `token` = ' . prepare ( $request [ 'token' ]) . ' AND `id_utente` = ' . prepare ( $user [ 'id_utente' ]));
2017-09-01 18:13:25 +02:00
} else {
$results = [
'status' => API :: getStatus ()[ 'unauthorized' ][ 'code' ],
];
}
break ;
}
return [
'login' ,
2017-09-04 11:53:30 +02:00
'logout' ,
2017-09-01 18:13:25 +02:00
];