Salut tout le monde, je suis en train de créer mon site (une sorte de blog) avec une architecture MVC. J'ai un fichier postController.php qui ressemble à ça :
class postController{
public function index(){
}
public function view($id){
}
// Admin
public function add(){
}
// etc.
}
Mon .htaccess renvoie tout vers un fichier index.php.
Ma question est comment vérifier qu'un admin est connecté pour les fonctions liées à l'administration ?
Je vérifie dans chaque fonction (add, edit, delete), je fais ça dans le fichier index.php ou je créé un fichier admin.php à part?
Merci par avance
Lors de l'appel de ta fonction (une fonction admin) tu check dans la session si l'utilisateur a les drois requis, sinon tu redirige vers une page
d'erreur.
On peut imaginer ça avec un tableau qui contiendrais les drois sous cette forme $table[fonction][action] = true ou false, dans ce cas là ça donnerais :
public function add(){
$permission = $_SESSION['user_permission'];
if (!$permission['post']['add']) { // Si le tableau retourne false
//Redirection et message flash ou autre à toi de voir
exit(); //on n'est jamais trop prudent
}
// Exécution de la fonction d'ajout
}
Du coup cela m'oblige à faire cette vérif à chaque appel de fonction! Je vais voir s'il est pas possible d'optimiser ça avec la methode __call()
Tu peut verifier directement au niveau de routes (je fait ça perso), un peut comme les filtres laravel.Le problème du call c'est que c'est pour toute la classe ;)
Je ne comprends pas trop ce que tu veux dire :)
Tu vérifies si il y a "edit", "add", etc. dans l'url et si oui tu vérifies les permissions?
Non, je verifie au chargement de l'url. Par exemple j'accede en post à /admin/add (le traitment de ton formulaire d'ajout) normalment le router touve le controller et l'action à charger sauf si tu a passe un paramètre permission a ta route dans ce cas la le router verifie si tu as le droit.
$router->addRoute('admin/add', ['permission' => 'addPost' , ...]
// Ici dans le tabelau je passe en paramètre qu'il faut la permission addPost le router fera donc les verifications en concéquence
Bonjour,
Pas mal l'idée uneo7, comment tu fais pour differencier la page inexsitante et le manque de droit ? C'est à dire que l'utilisateur aura une page 404 pour l'administration et non un message quI lui dit qu'il n'a pas les droits suffisants.
Dans tout les cas dès qu'une erreur se produit il appelle ErrorContoller et l'action index et lui passe en paremètre un code d'erreur (ex 401, ou 404 http://fr.wikipedia.org/wiki/Liste_des_codes_HTTP) ensuite la fonction affiche la page en fonction du code obtenu