Les autorisations avec CakePHP 1.2
Index de l'article
Les autorisations avec CakePHP 1.2
Quelques finesses
Toutes les pages

Creusons-un peu dans ce composant 'Auth' pour créer rapidement un système d'autorisation d'accès pour notre site.

Par défaut, CakePHP s'attend à ce que les utilisateurs soient appelés 'users', nous suivons donc ces recommandations. La première chose à faire consiste donc à créer une table dans la base de données (ici MySQL). Notez que les champs 'username' et 'password' sont aussi ceuxattendus par le système, ne le décevons pas sur ce point. (même si bien entendu, ce comportement peut être altéré, nous verrons plus tard comment) Attention également à la taille du champ 'password' qui doit être assez grand pour contenir la version chiffrée du mot de passe. 'Auth' s'en charge automatiquement.

 CREATE TABLE `users` (
`id` INT( 14 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 12 ) NOT NULL ,
`password` VARCHAR( 40 ) NOT NULL ,
`email` VARCHAR( 128 ) NOT NULL
`created` DATETIME NOT NULL ,
) ENGINE = MYISAM

Ensuite nous créons le modèle correspondant, dans app/models/user.php:

<?php
class User extends AppModel {
var $name = 'User';
var $components = array('Acl','Auth');
}
?>

Puis le contôleur dans app/controllers/users_controller.php qui doit contenir deux fonctions, login et logout

<?php
class UsersController extends AppController {
var $name = 'Users';
var $scaffold;

function login(){}
function logout(){}
}
?>

Par défaut, le système nous interdit l'accès à la gestion des utilisateurs, et tente de nous renvoyer à un formulaire de login, mais comme celui-ci n'existe pas encore, nous devons le créer dans app/views/users/login.ctp :

<div class="login">
<h2>Login</h2>
<?php echo $form->create('User', array('action' => 'login'));?>
<?php echo $form->input('username');?>
<?php echo $form->input('password');?>
<?php echo $form->submit('Login');?>
<?php echo $form->end(); ?>
</div>

Comme nous avons déclaré la variable $scaffold dans le contôleur, ce qui indique au système qu'il lui appartient de générer les différentes vues élémentaires permettant de créer, modifier et effacer des utilisateurs, l'essentiel du travail est à présent terminé. Toutefois, pour pouvoir réaliser ces opérations il faut être identifié... et il n'existe encore aucun utilistateur dans la base... pas de problème, affinons un peu les choses:

Modifions le contrôleur pour y ajouter la fonction beforeFilter() qui est appelée par le système avant toute autre action de ce contrôleur, ce qui est l'endroit idéal pour s'assurer qu'un utilisateur est bien autorisé. À l'intérieur de cette fonction, une seule ligne qui nous donne tout pouvoir:

function beforeFilter() {
$this->Auth->allow('*');
}

Et voilà, nous pouvons à présent entrer les informations de notre premier utilisateur. Il suffira par la suite de supprimer ou commenter cette ligne pour tester que tout fonctionne bien.

À partir de là, nous pouvons légèrement perfectionner le système et l'affiner en fonctions de l'usage souhaité.

 



Mis à jour ( Jeudi, 07 Août 2008 14:28 )
 
Bannière