Page 1 sur 1

[POO] Gestion des utilisateurs

Posté : 28 févr. 2008, 11:46
par agité
Bonjour,

Comme j'utilise pas mal de variables de session que je test au long de mon site, je me demandais s'il n'éxistait pas de méthode POO plus "pro" que simplement gerer a la connection et mettre un $_SESSION['Rank'] et $_SESSION['User_profil'].

Par exemple la j'ai fais une table utilisateur :

Code : Tout sélectionner

CREATE TABLE `user` ( `Id` int(11) NOT NULL auto_increment, `Civilite` enum('Mr','Mme','Mlle') collate utf8_unicode_ci NOT NULL default 'Mr', `Nom` varchar(50) collate utf8_unicode_ci NOT NULL, `Prenom` varchar(50) collate utf8_unicode_ci NOT NULL, `Identifiant` varchar(20) collate utf8_unicode_ci NOT NULL, `motdepasse` blob NOT NULL, `Observations` text collate utf8_unicode_ci NOT NULL, `Id_user_profil` int(10) NOT NULL, `Id_superieur` int(5) default NULL, `Id_secteur1` int(11) default NULL, `Id_secteur2` int(11) default NULL, PRIMARY KEY (`Id`), KEY `rang` (`Id_user_profil`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
Donc dans cette table je stock des Id commer l'Id de l'utilisateur supérieur ou celui des 2 secteurs ou il a accès.

Maintenant lorsque je créer mon menu je voudrais qu'en fonction de son rang l'utilisateur en vois une partie ce que j'ai résolu comme ca :

<?php
		if( ( $_SESSION['Rank'] == 0 ) or ( $_SESSION['Rank'] == 1 ) or ( $_SESSION['Rank'] == 2 ) or ( $_SESSION['Rank'] == 3 ))
		{
			include("menu_0.php");
		}

		if($_SESSION['Rank'] == 0)
		{
			include("menu_1.php");
		}
?>	
Ensuite sur chaque page je fais une vérification :

<?php 
session_start();

//Redirection de l'utilisateur s'il n'est pas log.
if(!isset($_SESSION['session_id']))
{	
header("location: ../index.php?url=".$_SERVER["REQUEST_URI"]); 
}

include($_SERVER["DOCUMENT_ROOT"].$_SESSION['Base_url']."/_includes/php/session.php"); 
include($_SERVER["DOCUMENT_ROOT"].$_SESSION['Base_url']."/_includes/php/admin/functions.php");

EstUtilsateurAdmin($_SESSION['Rank']);

?>	
Je verrifie si l'utilisateur est identifié puis je fais une fonction EstUtilisateurAdmin, pour la partie administration :


function EstUtilsateurAdmin($Rang)
{
	switch($Rang)
	{
	case 0 :
	$Acces = "Ok";
	break;
	
	case 1 :
	$Acces = "Nok";
	break;
	
	case 2 :
	$Acces = "Nok";
	break;
	
	case 3 :
	$Acces = "Nok";
	break;
	
	case 4 :
	$Acces = "Nok";
	break;
	
	case 5 :
	$Acces = "Nok";
	break;
	
	return $Acces;
	}
	
	if($Acces == "Nok"){header("location: ../accueil.php?Erreur=InvalidRank");}
}			
Une fois que j'ai trouvé les droits je voudrais que dans les partis accessible en fonction de son Id_secteur1 et Id_secteur2 il m'affiche le bon menu. Et aussi j'aimerais passer sur une methode moins "a l'arrache" pour gerer les rangs.

Une idée ?

Posté : 28 févr. 2008, 12:34
par Alkann
Tu pourrais mettre en place une politique de groupe. Globalement tu définis un groupe d'utilisateur auquel tu associes des droits et ensuite tu associes l'utilisateur à un groupe...

Il te suffira ensuite de gérer uniquement le fait qu'un flag soit actif pour afficher le menu.

Posté : 28 févr. 2008, 12:41
par agité
Tu pourrais mettre en place une politique de groupe. Globalement tu définis un groupe d'utilisateur auquel tu associes des droits et ensuite tu associes l'utilisateur à un groupe...

Il te suffira ensuite de gérer uniquement le fait qu'un flag soit actif pour afficher le menu.
Oui mais justement c'est la méthode qui me manque, la logique je pense l'avoir compris, mais c'est la mise en place qui pose problème. :roll:

Posté : 28 févr. 2008, 15:43
par Alkann
Tu peux avoir 2 classes pour les gestion des utiliteurs :
  • l'une pour la gestion des utilisateurs
  • l'autre pour la gestion des groupes.
Tu y ajoutes 3 tables en BDD :
  • une pour les utilisateurs,
  • une pour les groupes,
  • une dernière pour l'association des groupes et utilisateur.
Ensuite pour mettre en place cela, tu recupéres les informations de l'utilisateur et donc les accés de son groupe associé. Dans ta gestion du menu tu fais juste un test entre le menu que tu veux affiché et les droits de l'utilisateurs.

Voilà que cela t'aidera à mieux voir la méthode :)