Mo: Non, j'ai dit pas de baskets...
Toujours dans l'esprit du projet que je mets en place pour mes potes de boulot, et qui est en phase de béta test au moment où j'écris ces lignes, j'avais besoin de restreindre totalement pluxml aux non-inscrits: je voulais que seules les personnes disposant d'un profil puissent accéder au site... c'est Mo qui s'en charge (mo pour Members Only).
Il existe un plugin qui semble faire un truc dans le genre, mais je voulais quelque-chose de très simple...
Avis aux trolls, je dois avouer que je me suis contenté d'une sorte de minimum pour vérifier si un user était connecté... du coup, si vous pouvez améliorer la sécurité sans trop compliquer, je prends
Mo utilise plusieurs hooks pour verrouiller et rediriger correctement l'utilisateur:
Dès le début de l'index, on vérifie les variables de session (à mon avis, on peut faire mieux, là )
public function IndexBegin(){ // bloque l'accès si pas connecté et renvoie à la page de login echo '<?php if ( !isset($_SESSION["domain"]) || !isset($_SESSION["user"]) || !isset($_SESSION["profil"]) || !isset($_SESSION["hash"]) || !isset($_SESSION["lang"]) || $_SESSION["user"]=="" ){ header("Location: core/admin/auth.php?p=".htmlentities($_SERVER["REQUEST_URI"])); exit; } ?>'; }
Cette partie gère la redirection vers la page où le visiteur voulait se rendre après le login
public function AdminAuthPrepend(){echo '<?php $redirect=""; if(!empty($_GET["p"])) { $redirect = strip_tags(urldecode($_GET["p"])); }else{ $redirect = "'.PLX_ROOT.'"; } # Authentification if(!empty($_POST["login"]) AND !empty($_POST["password"])) { $connected = false; foreach($plxAdmin->aUsers as $userid => $user) { if ($_POST["login"]==$user["login"] AND sha1($user["salt"].md5($_POST["password"]))==$user["password"] AND $user["active"] AND !$user["delete"]) { $_SESSION["user"] = $userid; $_SESSION["profil"] = $user["profil"]; $_SESSION["hash"] = plxUtils::charAleatoire(10); $_SESSION["domain"] = $session_domain; $_SESSION["lang"] = $user["lang"]; $connected = true; } } if($connected) { header("Location: ".$redirect); exit; } else { $msg = L_ERR_WRONG_PASSWORD; $error = "error"; } } ?>'; } public function AdminAuthTop(){ echo ' <?php $redirect=""; if(!empty($_GET["p"])) { $redirect = strip_tags(urldecode($_GET["p"])); } ?>'; }
Le zip est par là !
Je pense que le code est sans aucun doute largement perfectible... toutefois, il présente un bon ratio efficacité/prise de tronche & temps perdu
Surtout que j'avais encore plein de plugins à réaliser dans le cadre de ce projet
Mais chhhhht : "keep your secret secret"
❝ 4 commentaires ❞
Fil RSS des commentaires de cet article
✍ Écrire un commentaire
les commentaires relevant du SPAM seront filtrés et dégagés direct...