Framework W :: Documentation

Light & powerful PHP framework

Les utilisateurs et la sécurité

Le framework W vous fournit quelques méthodes afin de faciliter la gestion de vos utilisateurs, la connexion et la déconnexion, ainsi que l'autorisation d'accès simple à vos ressources (pages).

Toutefois, puisque chaque application est différente : il est toujours sous votre responsabilité de créer vos formulaires d'enregistrement, de connexion et d'oubli de mot de passe.

L'utilisation du module de sécurité de W peut vous obliger à configurer quelques éléments supplémentaires, dans le fichier app/config.php. Les voici :

/* app/config.php */

//authentification, autorisation
'security_user_table' 		=> 'users',			//nom de la table contenant les infos des utilisateurs
'security_id_property' 		=> 'id',			//nom de la colonne pour la clé primaire
'security_username_property'=> 'username',		//nom de la colonne pour le "pseudo"
'security_email_property' 	=> 'email',			//nom de la colonne pour l'"email"
'security_password_property'=> 'password',		//nom de la colonne pour le "mot de passe"
'security_role_property' 	=> 'role',			//nom de la colonne pour le "role"
'security_login_route_name' => 'login',			//nom de la route affichant le formulaire de connexion

Toutes les valeurs affichées ci-dessus sont les valeurs par défaut. Si vous avez les mêmes, vous n'avez rien à configurer. Sinon, vous devez les spécifier.

Ainsi, W a besoin de connaître le nom de la table où vous stockez vos utilisateurs, et le nom de certaines colonnes importantes.

La clé de configuration security_login_route_name fait référence au nom de la route où vos utilisateurs se connectent (formulaire de login). W redirigera les utilisateurs non-connectés à cette page s'ils tentent d'accéder à une ressource protégée.

L'AuthentificationModel

La classe \W\Security\AuthentificationModel( [ $session_key = 'user'] ) met à votre disposition quelques méthodes utiles pour votre système d'authentification. Voici les plus utiles en résumé :

/* W\Security\AuthentificationModel.php */

// Vérifie qu'une combinaison d'email/username et mot de passe (en clair) sont présents en base de données et valides
// Vous devez avoir haché vos mdp avec la fonction password_hash() de votre côté !
// Retourne l'id de l'utilisateur si valide
public function isValidLoginInfo($usernameOrEmail, $plainPassword)

// Connecte un utilisateur
// L'argument à passer est un tableau contenant les données utilisateur
// Les données seront stockées sous la clé 'user' dans $_SESSION
public function logUserIn($user)

// Déconnecte un utilisateur
public function logUserOut()

// Utilise les données utilisateurs présentes en base pour mettre à jour les données en session
public function refreshUser()

// Créer un hash simple d'un mot de passe en utilisant l'algorithme par défaut
public function hashPassword($plainPassword)

Sécuriser une page

Afin de n'autoriser que certains utilisateurs à consulter une page, une méthode du \W\Controller\Controller est à votre disposition. Ainsi, si vos souhaitez limiter l'accès à une page du back-office aux utilisateurs ayant le rôle admin :

/* app/VotreController.php */

//...
public function adminHome()
{
	$this->allowTo('admin');

	// reste du code accessible que pour les 'admin'...
}

La méthode allowTo() peut recevoir un seul rôle en paramètre, ou un tableau en contenant plusieurs. La méthode utilise en interne la méthode isGranted() de l'\W\Security\AuthorizationModel.

Récupérer l'utilisateur connecté

Si vous souhaitez gérer plus en finesse l'autorisation d'accès à une page, ou simplement consulter ou manipuler les données de l'utilisateur connecté, vous avez également accès une méthode de contrôleur simple :

/* app/VotreController.php */

//...
public function adminHome()
{
	$loggedUser = $this->getUser();
	//debug($loggedUser);
}

Vous pouvez également accéder à l'utilisateur connecté automatiquement dans les fichiers de vue, avec la variable $w_user.