Page 1 sur 1

Gestion rangs utilisateurs

Posté : 02 mars 2016, 12:37
par TLeroy
Bonjour, c'est mon premier post ici ^^ j'ai un gros soucis qui me bloque complètement sur une application que je code en php sur un modèle MVC.

J'aimerais pouvoir gérer les rangs de mes utilisateurs, le rang 1 corresponds aux admin, le rang 2 aux employés, le rang 3 aux clients. Pour l'instant, je gère ce genre de choses avec le login, mais ça a très vite ses limites, et mon soucis c'est qu'à la connexion, je n'ai que le login de récupéré, pas le rang.

Je ne sais pas vraiment quoi mettre comme code pour vous montrer, du coup je met tout le code de mon modèle, et l'action de login dans mon contrôleur, vu que c'est, je pense, de là que part le problème.

Modèle : User.Class.php
class User extends Entity {
	
	private $_login;
	private $_motdepasse;
	private $_id;
	private $_rank;
	
	private static $_leuser;
	
	public function User($lelogin=null, $lemdp=null, $lerank=null) {
			$this->_login=$lelogin;
			$this->_motdepasse=$lemdp;
			$this->_rank=$lerank;
			$this->lierDB("User","utilisateur");
	}
	
	public function getLogin(){
		return $this->_login; 
	}
	
	public function getRank(){
		return $this->_rank;
	}
	
	public function getId(){
		
		$id = $this->LoadByCritere("login = \"$this->_login\"")->getAll();
		return $id[0]->getLogin()[0];
	}
	
	public function getMdp(){
		return $this->_motdepasse;
	}
	/*
	 * Methodes � port� de classe Static
	 */
	
	/**
	 * Récupère l'instance de l'utilisateur sous la forme d'un singleton dans la classe User.
	 */
	
	public static function getInstance($login=null){
		if(!isset(self::$_leuser)){
		$leuser=new User($login);
		self::$_leuser=$leuser;
		}
		return self::$_leuser;
	}
	
	/*
	 * Sauvegarde le singleton User dans la variable de session.
	 */
	
	public static function saveUserSession(){
		$_SESSION['user']=User::$_leuser;
	}
	
	
	/*
	 * Initialise le User en fonction de ce qu'il y a dans la session
	 */
	
	public static function initUserSession(){
		if(isset($_SESSION['user'])){
			User::$_leuser=$_SESSION['user'];
		}
	}
	
	
	/*
	 * Initialise le User en fonction de ce qu'il y a dans la session.
	 */
	
	public static function isConnected(){
		
		if(User::$_leuser==NULL){
			return false;
		}
		else{
			return isset(User::$_leuser);
		}
	}
	
	/**
	 * Supprime la variable de session User. A la prochaine requete http, le User ne sera plus reconnu.
	 */
	public static function DestroySession(){
		User::$_leuser=null;
		unset($_SESSION['user']);
	}
	
	
	public function seConnecter(){
		
		//On relie notre classe a notre table
		$this->lierDB("User", "utilisateur");
		
		//On initialise une variable résultat qui reïçoit un LoadByCritere qui a pour but de renvoyer
		//le login et le mot de passe inscrit dans la table utilisateur
		$resultat = $this->LoadByCritere("login = \"$this->_login\" and motdepasse = \"$this->_motdepasse\"" );
		
		//Si le resultat est nul on retourne faux et il n'y a pas de connexion, si il est vrai, il y a connexion
		if ($resultat->getAll() == null){			
			return false;		
		}
		else{		
			return true;
		}
		
	}
	
}
et le controleur (loginAction) :
function LoginAction(){
	
		if(isset($_POST['valider'])){
			$login=$_POST['inputLogin'];
			$password=$_POST['inputPassword'];
	
			//on crée une variable utilisateur qui reçoit le login et le mot de passe initialisé plus haut
			$utilisateur = new User($login, $password);
			
			//var_dump($utilisateur->seConnecter());
			//Si la fonction se connecter renvois vrai, alors il y a connexion
			if($utilisateur->seConnecter() == true){
	
				User::getInstance($login);
				
				//redirection sur la page d'authentification quand r�ussie
				Application::getController("User","Authentification");
			}
	
			else{
				//redirection vers le formulaire quand échec		
				$params['error']="Authentification incorrecte (Login ou mot de passe incorrect)";
				Application::getController("user","Form",$params);
		
			}
		}
Si vous voulez, actuellement je fais une condition if(User::getinstance()->getLogin=="admin"){ // mon code; je voudrais pouvoir faire la même chose en utilisant un "getRank()" qui serait nettement mieux, sauf que le rang n'est jamais récupéré.

Je cherche surtout une idée pour continuer à avancer et récupérer mes rangs pour les réutiliser, quand je fais un var_dump($_SESSION), je récupère un Objet "User" avec toutes les valeurs nulles, sauf le login qui est récupéré. C'est là que je bloque..

Auriez vous des idées à me proposer ? :)

Re: Gestion rangs utilisateurs

Posté : 31 mars 2016, 10:16
par Maitrepylos
Bonjour, alors en PHP5 la fonction constructeur ne se nomme plus comme la classe :

Code : Tout sélectionner

//public function User($lelogin=null, $lemdp=null, $lerank=null) {   //    $this->_login=$lelogin;    //   $this->_motdepasse=$lemdp;     //  $this->_rank=$lerank;     //  $this->lierDB("User","utilisateur");   //}      public function __construct($lelogin=null, $lemdp=null, $lerank=null) {       $this->_login=$lelogin;       $this->_motdepasse=$lemdp;       $this->_rank=$lerank;       $this->lierDB("User","utilisateur");   }
Ensuite que fait la fonction lierDB ?