Gestion de la création et suppression de token toutes les fonctions repo/modules
This commit is contained in:
parent
dc40901143
commit
4487fb9e00
|
@ -3,6 +3,7 @@
|
|||
|
||||
use \manager\ModuleRequest;
|
||||
use \manager\ResourceDispatcher;
|
||||
use \manager\sessionManager;
|
||||
use \manager\ManagerError;
|
||||
use \manager\Repo;
|
||||
|
||||
|
@ -64,13 +65,7 @@
|
|||
var_dump( $contact );
|
||||
}
|
||||
|
||||
// parseCallLog();
|
||||
parseCallLog();
|
||||
|
||||
|
||||
|
||||
$request = new ModuleRequest('token/generate', array('newtoken', '2') );
|
||||
$answer = $request->dispatch();
|
||||
|
||||
var_dump( ManagerError::explicit($request->error) );
|
||||
var_dump( $answer );
|
||||
?>
|
|
@ -7,8 +7,10 @@
|
|||
"token": [
|
||||
"getAll",
|
||||
"getById",
|
||||
|
||||
"check",
|
||||
"generate"
|
||||
"generate",
|
||||
"remove"
|
||||
]
|
||||
|
||||
}
|
|
@ -1,2 +1,2 @@
|
|||
section[data-panel-list]{display:block;position:relative;border-radius:3px;border:1px solid #ccc;background-color:#fff;font-size:.8em}section[data-panel-list]>div[data-header]{display:flex;position:relative;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;padding:.5em .7em;border-radius:3px 3px 0 0;border-bottom:1px solid #ccc;background-color:#f5f5f5;box-shadow:inset 0 0 5px #eee}section[data-panel-list]>div[data-header]>span,section[data-panel-list]>div[data-header]>button{color:#333;font-weight:bold;line-height:2em}section[data-panel-list]>div[data-header]>button{padding:.1em .7em;border-radius:3px;border:1px solid #555;background:#f5f5f5;transition:all .2s ease-in-out}section[data-panel-list]>div[data-header]>button:hover{background:#333;color:#fff}section[data-panel-list]>div[data-description]{display:block;position:relative;border-bottom:1px solid #ccc;padding:.7em .7em;color:#666}section[data-panel-list]>ul[data-list]{display:flex;position:relative;flex-direction:column;justify-content:flex-start;flex-wrap:nowrap;margin:0;padding:0;list-style:none}section[data-panel-list]>ul[data-list]>li[data-element]{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;padding:.2em 1em}section[data-panel-list]>ul[data-list]>li[data-element]:not(:last-child){border-bottom:1px solid #ccc}section[data-panel-list]>ul[data-list]>li[data-element]>div:nth-child(1){display:flex;width:10em;height:6em;flex-direction:column;justify-content:flex-end;align-items:center;background:url("/f/svg/token/st/container/666666") center 1em no-repeat;background-size:auto 50%}section[data-panel-list]>ul[data-list]>li[data-element]>div:nth-child(1).active{background-image:url("/f/svg/token/st/container/4cbf86")}section[data-panel-list]>ul[data-list]>li[data-element]>div:nth-child(1)>span{display:block;padding:0 .4em;border-radius:3px;border:1px solid #ddd;font-size:.8em;color:#666;text-transform:uppercase;font-weight:bold}section[data-panel-list]>ul[data-list]>li[data-element]>div:nth-child(n+2){display:flex;position:relative;flex:10em;padding:1em;flex-direction:column;justify-content:flex-start;align-items:flex-start;font-size:.9em;color:#666;font-weight:bold}section[data-panel-list]>ul[data-list]>li[data-element]>div:nth-child(n+2)>span[data-prefix]:before{content:attr(data-prefix) ": ";font-weight:normal}section[data-panel-list]>ul[data-list]>li[data-element]>button{padding:.1em .7em;height:2em;border-radius:3px;border:1px solid #de2b08;background:#fff;color:#de2b08;font-weight:bold;transition:all .2s ease-in-out}section[data-panel-list]>ul[data-list]>li[data-element]>button:hover{background:#de2b08;color:#fff}section[data-panel-list]>div[data-add]{display:none;position:relative;padding:1em;border-top:1px solid #ccc;background-color:#f5f5f5;font-weight:bold}section[data-panel-list]>div[data-add].active{display:block}section[data-panel-list]>div[data-add]>input[type='text']{margin:1em 0;padding:.3em .5em;border-radius:3px;border:1px solid #999;background-color:#fff;color:#000;font-weight:normal}
|
||||
section[data-panel-list]{display:block;position:relative;border-radius:3px;border:1px solid #ccc;background-color:#fff;font-size:.8em}section[data-panel-list]>div[data-header]{display:flex;position:relative;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;padding:.5em .7em;border-radius:3px 3px 0 0;border-bottom:1px solid #ccc;background-color:#f5f5f5;box-shadow:inset 0 0 5px #eee}section[data-panel-list]>div[data-header]>span,section[data-panel-list]>div[data-header]>button{color:#333;font-weight:bold;line-height:2em}section[data-panel-list]>div[data-header]>button{padding:.1em .7em;border-radius:3px;border:1px solid #555;background:#f5f5f5;transition:all .2s ease-in-out}section[data-panel-list]>div[data-header]>button:hover{background:#333;color:#fff}section[data-panel-list]>div[data-description]{display:block;position:relative;border-bottom:1px solid #ccc;padding:.7em .7em;color:#666}section[data-panel-list]>ul[data-list]{display:flex;position:relative;flex-direction:column;justify-content:flex-start;flex-wrap:nowrap;margin:0;padding:0;list-style:none}section[data-panel-list]>ul[data-list]>li[data-element]{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;padding:.2em 1em}section[data-panel-list]>ul[data-list]>li[data-element]:not(:last-child){border-bottom:1px solid #ccc}section[data-panel-list]>ul[data-list]>li[data-element]>div:nth-child(1){display:flex;width:10em;height:6em;flex-direction:column;justify-content:flex-end;align-items:center;background:url("/f/svg/token/st/container/666666") center 1em no-repeat;background-size:auto 50%}section[data-panel-list]>ul[data-list]>li[data-element]>div:nth-child(1).active{background-image:url("/f/svg/token/st/container/4cbf86")}section[data-panel-list]>ul[data-list]>li[data-element]>div:nth-child(1)>span{display:block;padding:0 .4em;border-radius:3px;border:1px solid #ddd;font-size:.8em;color:#666;text-transform:uppercase;font-weight:bold}section[data-panel-list]>ul[data-list]>li[data-element]>div:nth-child(n+2){display:flex;position:relative;flex:10em;padding:1em;flex-direction:column;justify-content:flex-start;align-items:flex-start;font-size:.9em;color:#666;font-weight:bold}section[data-panel-list]>ul[data-list]>li[data-element]>div:nth-child(n+2)>span[data-prefix]:before{content:attr(data-prefix) ": ";font-weight:normal}section[data-panel-list]>ul[data-list]>li[data-element]>button{padding:.1em .7em;height:2em;border-radius:3px;border:1px solid #de2b08;background:#fff;color:#de2b08;font-weight:bold;transition:all .2s ease-in-out}section[data-panel-list]>ul[data-list]>li[data-element]>button:hover{background:#de2b08;color:#fff}section[data-panel-list]>div[data-add]{display:none;position:relative;padding:1em;border-bottom:1px solid #ccc;background-color:#f5f5f5;font-weight:bold}section[data-panel-list]>div[data-add].active{display:block}section[data-panel-list]>div[data-add]>input[type='text']{margin:1em 0;padding:.3em .5em;border-radius:3px;border:1px solid #999;background-color:#fff;color:#000;font-weight:normal}
|
||||
/*# sourceMappingURL=global.css.map */
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"version": 3,
|
||||
"mappings": "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",
|
||||
"mappings": "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",
|
||||
"sources": ["global.scss"],
|
||||
"names": [],
|
||||
"file": "global.css"
|
||||
|
|
|
@ -208,7 +208,7 @@ section[data-panel-list]{
|
|||
|
||||
padding: 1em;
|
||||
|
||||
border-top: 1px solid #ccc;
|
||||
border-bottom: 1px solid #ccc;
|
||||
|
||||
background-color: #f5f5f5;
|
||||
|
||||
|
|
|
@ -197,4 +197,9 @@
|
|||
|
||||
|
||||
|
||||
/* [6] Gestion du rechargement de page
|
||||
=========================================================*/
|
||||
function reload(){ navMenu( pageManager.page ); }
|
||||
|
||||
|
||||
// }
|
|
@ -10,6 +10,7 @@ APIClass.prototype = {
|
|||
*
|
||||
* @param pRequest<Object> l'objet passé en JSON à http://host/api/
|
||||
* @param pHandler<Function> fonction qui s'éxécutera lors de la réponse (1 argument -> réponse<Object>)
|
||||
* @param pToken<String> si donne, token d'auth pour l'api
|
||||
*
|
||||
* @return answer<Object> l'objet retourné par http://host/api/ via pHandler (1er argument)
|
||||
*
|
||||
|
@ -26,7 +27,7 @@ APIClass.prototype = {
|
|||
* 3. on passe une fonction qui utilise un argument (sera la réponse de http://host/api/) (sous forme d'objet)
|
||||
*
|
||||
*/
|
||||
send: function(pRequest, pHandler){
|
||||
send: function(pRequest, pHandler, pToken){
|
||||
|
||||
// Si le chemin de delegation n'est pas renseigne, on renvoie une erreur
|
||||
if( !pRequest.hasOwnProperty('path') )
|
||||
|
@ -77,7 +78,16 @@ APIClass.prototype = {
|
|||
if( pRequest.hasOwnProperty('data') )
|
||||
form.append('data', JSON.stringify(pRequest.data) );
|
||||
|
||||
|
||||
|
||||
this.xhr[i].open('POST', this.target, true);
|
||||
|
||||
|
||||
// Gestion du token optionnel
|
||||
if( pToken != null ) this.xhr[i].setRequestHeader('Authorization', 'Digest '+pToken);
|
||||
|
||||
|
||||
|
||||
this.xhr[i].send( form );
|
||||
|
||||
}
|
||||
|
|
|
@ -25,33 +25,16 @@
|
|||
if( !Database::check('id', $id_token) ) return array('ModuleError' => ManagerError::ParamError);
|
||||
|
||||
|
||||
/* [1] Verification de l'existance du token
|
||||
/* [1] Suppression du token
|
||||
=========================================================*/
|
||||
$token_exists = new Repo('token/getById', array($id_token));
|
||||
|
||||
// On renvoie une erreur si le token n'existe pas
|
||||
if( $token_exists->answer() == false ) return array('ModuleError' => ManagerError::Success, 'status' => false);
|
||||
|
||||
|
||||
/* [2] Suppression du token
|
||||
=========================================================*/
|
||||
$token_exists = new Repo('token/getById', array($id_token));
|
||||
|
||||
|
||||
/* [3] On verifie que le token soit supprime
|
||||
=========================================================*/
|
||||
$token_removed = new Repo('token/getById', array($id_token));
|
||||
|
||||
// On renvoie une erreur si le token existe encore
|
||||
if( $token_removed->answer() !== false ) return array('ModuleError' => ManagerError::Success, 'status' => false);
|
||||
$remove = new Repo('token/remove', array($id_token));
|
||||
// On renvoie une erreur si une erreur intervient pendant la suppression
|
||||
if( !$remove->answer() ) return array('ModuleError' => ManagerError::ModuleError);
|
||||
|
||||
|
||||
/* [n] Gestion du retour quand tout est normal
|
||||
=========================================================*/
|
||||
return array(
|
||||
'ModuleError' => ManagerError::Success,
|
||||
'status' => true
|
||||
);
|
||||
return array( 'ModuleError' => ManagerError::Success );
|
||||
}
|
||||
|
||||
|
||||
|
@ -71,18 +54,17 @@
|
|||
public static function generate($name, $duration){
|
||||
/* [0] Verification des INPUT
|
||||
=========================================================*/
|
||||
if( !Database::check('varchar(50)', $name) || !Database::check('int', $duration) )
|
||||
if( !Database::check('varchar(50)', $name) || !Database::check('numeric', $duration) )
|
||||
return array('ModuleError' => ManagerError::ParamError); // erreur de parametre
|
||||
|
||||
|
||||
/* [1] On cree le token et recupere son id ou FAUX
|
||||
=========================================================*/
|
||||
$create = new Repo('token/generate', array($name, $duration));
|
||||
$created = $create->answer();
|
||||
|
||||
|
||||
// Si erreur de creation
|
||||
if( $created === false ) return array('ModuleError' => ManagerError::ModuleError );
|
||||
if( $create->answer() === false ) return array('ModuleError' => ManagerError::ModuleError );
|
||||
|
||||
|
||||
/* [2] Gestion du retour
|
||||
|
|
|
@ -93,7 +93,12 @@
|
|||
if( !Database::check('sha1', $token) ) return false;
|
||||
|
||||
|
||||
/* [1] Verification dans la base de donnees
|
||||
/* [1] Verification du token local
|
||||
=========================================================*/
|
||||
if( substr($_SESSION['session_token'], 0, 40) == $token ) return true;
|
||||
|
||||
|
||||
/* [2] Verification dans la base de donnees
|
||||
=========================================================*/
|
||||
$check = Database::getPDO()->prepare("SELECT id_token
|
||||
FROM api_token
|
||||
|
@ -102,12 +107,14 @@
|
|||
$check->execute(array( ':token' => $token ));
|
||||
|
||||
|
||||
/* [2] On retourne le resultat
|
||||
/* [3] On retourne le resultat
|
||||
=========================================================*/
|
||||
return $check->fetch() !== false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* GENERE UN NOUVEAU TOKEN DE NOM ET EXPIRATION SPECIFIEE
|
||||
*
|
||||
* @name<String> Nom attribue au token
|
||||
|
@ -120,8 +127,7 @@
|
|||
public static function generate($name, $duration){
|
||||
/* [0] Verification des INPUT
|
||||
=========================================================*/
|
||||
if( !Database::check('varchar(50)', $name) || !Database::check('int', $duration) )
|
||||
return array('ModuleError' => ManagerError::ParamError); // erreur de parametre
|
||||
if( !Database::check('varchar(50)', $name) || !Database::check('int', $duration) ) return false;
|
||||
|
||||
|
||||
/* [1] Generation d'un token si pas deja dans la BDD
|
||||
|
@ -174,6 +180,38 @@
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* SUPPRIME UN TOKEN D'ID SPECIFIE
|
||||
*
|
||||
* @id_token<int> UID du token en question
|
||||
*
|
||||
* @return status<bool> VRAI si le token est bien cree sinon FALSE
|
||||
*
|
||||
*/
|
||||
public static function remove($id_token){
|
||||
/* [0] Verification des INPUT
|
||||
=========================================================*/
|
||||
if( !Database::check('id', $id_token) ) return false;
|
||||
|
||||
|
||||
/* [1] On verifie l'existance du token
|
||||
=========================================================*/
|
||||
if( !self::getById($id_token) ) return false;
|
||||
|
||||
|
||||
/* [2] Suppression du token
|
||||
=========================================================*/
|
||||
$remove = Database::getPDO()->prepare("DELETE FROM api_token
|
||||
WHERE id_token = :id_token");
|
||||
$remove->execute(array( ':id_token' => $id_token ));
|
||||
|
||||
|
||||
/* [3] On retourne VRAI si le token est bien supprime
|
||||
=========================================================*/
|
||||
return self::getById($id_token) === false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,19 +1,84 @@
|
|||
|
||||
/* [1] Gestion des tokens
|
||||
=========================================================*/
|
||||
var TOKEN = {
|
||||
add: { // Tout ce qui attrait a l'ajout
|
||||
toggle: document.getElementById('add-token'), // bouton de toggle pour l'affichage du panel
|
||||
panel: document.querySelector('div[data-add]'), // formulaire de creation
|
||||
state: true, // etat (visible ou non) du panel
|
||||
|
||||
name: document.getElementById('add-name'), // nom du token a creer
|
||||
duration: document.getElementById('add-duration'), // duree du token a creer (en jours)
|
||||
submit: document.getElementById('add-submit') // validation de la creation
|
||||
},
|
||||
|
||||
|
||||
remove: {
|
||||
buttons: document.querySelectorAll('.remove-token')
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* (1) Gestion de la creation de token */
|
||||
var add_token_button = document.getElementById('add-token');
|
||||
var add_panel = document.querySelector('div[data-add]');
|
||||
|
||||
/* (1.1) Gestion du toggle pour le panel de creation */
|
||||
var add_panel_state = true;
|
||||
add_token_button.addEventListener('click', function(e){
|
||||
/* (1.1) Gestion du toggle pour le panel de creation */
|
||||
TOKEN.add.toggle.addEventListener('click', function(e){
|
||||
TOKEN.add.panel.className = (TOKEN.add.state) ? 'active' : ''; // toggle de la classe (visibilite)
|
||||
TOKEN.add.state = !TOKEN.add.state; // switch de l'etat pour le toggle
|
||||
}, false);
|
||||
|
||||
add_panel.className = (add_panel_state) ? 'active' : '';
|
||||
/* (1.2) Gestion de la creation */
|
||||
TOKEN.add.submit.addEventListener('click', function(e){
|
||||
// On redige la requete
|
||||
var request = { // on ecrit la requete
|
||||
'path': 'token/generate',
|
||||
'data': [TOKEN.add.name.value, TOKEN.add.duration.value]
|
||||
};
|
||||
|
||||
add_panel_state = !add_panel_state;
|
||||
}, false);
|
||||
// On lance la requete
|
||||
api.send(request, function(answer){
|
||||
console.log( answer );
|
||||
// Si la generation effectuee, on recharge la page
|
||||
if( answer.ModuleError == 0 )
|
||||
reload();
|
||||
|
||||
}, js_access_token);
|
||||
}, false);
|
||||
|
||||
|
||||
/* (n) Gestion de la suppression de token */
|
||||
var remove_token_buttons = document.querySelectorAll('.remove-token');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* (2) Gestion de la suppression de token */
|
||||
for( var i = 0 ; i < TOKEN.remove.buttons.length ; i++ ){
|
||||
|
||||
/* (2.0) Pour chaque bouton supprimer, on attache un evenement */
|
||||
TOKEN.remove.buttons[i].addEventListener('click', function(e){
|
||||
var token_id = e.target.parentNode.getData('id');
|
||||
|
||||
/* (2.1) Si on ne trouve pas l'id, on retourne une erreur */
|
||||
if( token_id == false ){ console.warn('id du token non trouvee'); return; }
|
||||
|
||||
/* (2.2) On lance la suppression */
|
||||
var request = { // on ecrit la requete
|
||||
'path': 'token/remove',
|
||||
'data': [token_id]
|
||||
};
|
||||
|
||||
// On lance la requete
|
||||
api.send(request, function(answer){
|
||||
// Si la suppression effectuee, on recharge la page
|
||||
if( answer.ModuleError == 0 )
|
||||
reload();
|
||||
|
||||
}, js_access_token);
|
||||
|
||||
}, false);
|
||||
|
||||
}
|
|
@ -29,7 +29,13 @@ $tokens = $req_tokens->answer();
|
|||
</div>
|
||||
|
||||
<!-- Description des tokens actifs -->
|
||||
<div data-description>Liste des accès distants actifs. Ils seront automatiquement désactivés a la date d'expiration.</div>
|
||||
<div data-description>Liste des accès distants actifs. Ils seront automatiquement désactivés a la date d'expiration. Veuillez toutefois les supprimer.</div>
|
||||
<!-- Creation d'un nouvel element (cache) -->
|
||||
<div data-add>
|
||||
<label for='add-name'>Nom de l'accès</label><br><input type='text' placeholder='token' id='add-name'><br>
|
||||
<label for='add-duration'>Duree de vie (jours)</label><br><input type='text' value='10' id='add-duration'><br>
|
||||
<input type='button' value='Ajouter un accès' id='add-submit'>
|
||||
</div>
|
||||
|
||||
<!-- Conteneur de la liste des elements -->
|
||||
<ul data-list>
|
||||
|
@ -60,12 +66,6 @@ $tokens = $req_tokens->answer();
|
|||
|
||||
</ul>
|
||||
|
||||
<!-- Creation d'un nouvel element (cache) -->
|
||||
<div data-add>
|
||||
<label for='add-name'>Nom de l'accès</label><br><input type='text' placeholder='token' id='add-name'><br>
|
||||
<label for='add-duration'>Duree de vie (jours)</label><br><input type='text' placeholder='10' id='add-duration'><br>
|
||||
<input type='button' value='Ajouter un accès'>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
|
Loading…
Reference in New Issue