Gestion de l'accès à l'API avec tokens
This commit is contained in:
parent
4b92b19d92
commit
4950f66fd9
|
@ -68,6 +68,4 @@
|
||||||
var_dump( $contact );
|
var_dump( $contact );
|
||||||
}
|
}
|
||||||
|
|
||||||
parseCallLog();
|
|
||||||
|
|
||||||
?>
|
?>
|
|
@ -5,7 +5,8 @@
|
||||||
|
|
||||||
|
|
||||||
"token": [
|
"token": [
|
||||||
"getAll"
|
"getAll",
|
||||||
|
"check"
|
||||||
]
|
]
|
||||||
|
|
||||||
}
|
}
|
|
@ -216,7 +216,7 @@
|
||||||
return $checker && is_string($value) && strlen($value) <= 50 && preg_match('/^[\w\.-]+@[\w\.-]+\.[a-z]{2,4}$/i', $value);
|
return $checker && is_string($value) && strlen($value) <= 50 && preg_match('/^[\w\.-]+@[\w\.-]+\.[a-z]{2,4}$/i', $value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'user.password':
|
case 'sha1':
|
||||||
return $checker && is_string($value) && preg_match('/^[\da-f]{40}$/i', $value);
|
return $checker && is_string($value) && preg_match('/^[\da-f]{40}$/i', $value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,10 @@
|
||||||
// Erreur lors de la creation d'un objet PDO (connection)
|
// Erreur lors de la creation d'un objet PDO (connection)
|
||||||
const PDOConnection = 14;
|
const PDOConnection = 14;
|
||||||
|
|
||||||
|
/* API token */
|
||||||
|
// Token inexistant ou faux
|
||||||
|
const TokenError = 15;
|
||||||
|
|
||||||
|
|
||||||
/* EXPLICITE UN CODE D'ERREUR
|
/* EXPLICITE UN CODE D'ERREUR
|
||||||
*
|
*
|
||||||
|
@ -90,6 +94,8 @@
|
||||||
|
|
||||||
case self::PDOConnection: return "La connexion avec la base de donnees a echoue"; break;
|
case self::PDOConnection: return "La connexion avec la base de donnees a echoue"; break;
|
||||||
|
|
||||||
|
case self::TokenError: return "Le token de connection est absent ou errone"; break;
|
||||||
|
|
||||||
// default: return "Erreur inconnue..."; break;
|
// default: return "Erreur inconnue..."; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -137,7 +137,7 @@
|
||||||
public function serialize(){
|
public function serialize(){
|
||||||
|
|
||||||
// On rajoute l'erreur au message
|
// On rajoute l'erreur au message
|
||||||
$returnData = array_merge( array('ModuleError' => $this->error), $this->data );
|
$returnData = array_merge( array('ModuleError' => ManagerError::explicit($this->error)), $this->data );
|
||||||
|
|
||||||
return json_encode($returnData);
|
return json_encode($returnData);
|
||||||
|
|
||||||
|
|
|
@ -167,6 +167,25 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function fromPost($post){
|
public static function fromPost($post){
|
||||||
|
/* [0] Verification de l'authentification
|
||||||
|
=========================================================*/
|
||||||
|
/* (1) Si le token n'est pas dans le header */
|
||||||
|
if( !isset($_SERVER['PHP_AUTH_DIGEST']) ){
|
||||||
|
$tmp = new ModuleRequest();
|
||||||
|
$tmp->error = ManagerError::TokenError;
|
||||||
|
return $tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (2) Si le token n'est pas dans la BDD */
|
||||||
|
$checkToken = new Repo('token/check', array($_SERVER['PHP_AUTH_DIGEST']) );
|
||||||
|
$valid_token = $checkToken->answer();
|
||||||
|
|
||||||
|
if( !$valid_token ){
|
||||||
|
$tmp = new ModuleRequest();
|
||||||
|
$tmp->error = ManagerError::TokenError;
|
||||||
|
return $tmp;
|
||||||
|
}
|
||||||
|
|
||||||
/* [1] On verifie que le @path est renseigne
|
/* [1] On verifie que le @path est renseigne
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
if( !isset($post['path']) )
|
if( !isset($post['path']) )
|
||||||
|
|
|
@ -45,6 +45,37 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* VERIFIE SI UN TOKEN EST VALIDE
|
||||||
|
*
|
||||||
|
* @token<String> Token en question
|
||||||
|
*
|
||||||
|
* @return valid<bool> Retourne si VRAI ou FAUX le token est valid
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function check($token){
|
||||||
|
/* [0] Verification des INPUT
|
||||||
|
=========================================================*/
|
||||||
|
// si le format est incorrect, on retourne FAUX
|
||||||
|
if( !Database::check('sha1', $token) ) return false;
|
||||||
|
|
||||||
|
|
||||||
|
/* [1] Verification dans la base de donnees
|
||||||
|
=========================================================*/
|
||||||
|
$check = Database::getPDO()->prepare("SELECT id_token
|
||||||
|
FROM api_token
|
||||||
|
WHERE CURDATE() BETWEEN creation AND expires
|
||||||
|
AND token = :token");
|
||||||
|
$check->execute(array( ':token' => $token ));
|
||||||
|
|
||||||
|
|
||||||
|
/* [2] On retourne le resultat
|
||||||
|
=========================================================*/
|
||||||
|
return $check->fetch() !== false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue