bonsoir à tous,
je suis le tuto d'authentification du book de cakephp.org: Authentification Simple et Autorisation de l’Application
pour l'adapter à mon sujet, j'ai remplacé le champ role par une clé etrangere group_id qui provient de la table groups:
user.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 CREATE TABLE `users` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL, `password` varchar(50) DEFAULT NULL, `group_id` varchar(20) NOT NULL, `created` datetime DEFAULT NULL, `modified` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `group_id` (`group_id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 <?php App::uses('AuthComponent', 'Controller/Component'); class User extends AppModel { public $name = 'User'; var $belongsTo = 'Group'; public $validate = array( 'username' => array( 'required' => array( 'rule' => array('notEmpty'), 'message' => 'Un nom d\'user est requis' ) ), 'password' => array( 'required' => array( 'rule' => array('notEmpty'), 'message' => 'Un mot de passe est requis' ) ) ); public function beforeSave($options = array()) { if (isset($this->data[$this->alias]['password'])) { $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']); } return true; } } ?>
UsersController.php
AppController.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 <?php class UsersController extends AppController { public function beforeFilter() { parent::beforeFilter(); $this->Auth->allow('add'); // Laissons les users d'enregistrer eux-memes } public function index() { $this->User->recursive = 0; $this->set('users', $this->paginate()); } public function view($id = null) { $this->User->id = $id; if (!$this->User->exists()) { throw new NotFoundException(__('User invalide')); } $this->set('user', $this->User->read(null, $id)); } public function add() { if ($this->request->is('post')) { $this->User->create(); if ($this->User->save($this->request->data)) { $this->Session->setFlash(__('L\'user a été sauvegardé')); return $this->redirect(array('action' => 'index')); } else { $this->Session->setFlash(__('L\'user n\'a pas été sauvegardé. Merci de réessayer.')); } } $groups = $this->User->Group->find('list'); $this->set(compact('groups')); } public function edit($id = null) { $this->User->id = $id; if (!$this->User->exists()) { throw new NotFoundException(__('User Invalide')); } if ($this->request->is('post') || $this->request->is('put')) { if ($this->User->save($this->request->data)) { $this->Session->setFlash(__('L\'user a été sauvegardé')); return $this->redirect(array('action' => 'index')); } else { $this->Session->setFlash(__('L\'user n\'a pas été sauvegardé. Merci de réessayer.')); } } else { $this->request->data = $this->User->read(null, $id); unset($this->request->data['User']['password']); } } public function delete($id = null) { $this->request->onlyAllow('post'); $this->User->id = $id; if (!$this->User->exists()) { throw new NotFoundException(__('User invalide')); } if ($this->User->delete()) { $this->Session->setFlash(__('User supprimé')); return $this->redirect(array('action' => 'index')); } $this->Session->setFlash(__('L\'user n\'a pas été supprimé')); return $this->redirect(array('action' => 'index')); } public function login() { if ($this->request->is('post')) { if ($this->Auth->login()) { return $this->redirect($this->Auth->redirect()); } else { $this->Session->setFlash(__('Nom d\'user ou mot de passe invalide, réessayer')); } } } public function logout() { return $this->redirect($this->Auth->logout()); } } ?>
Ma vue login.ctp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <?php App::uses('Controller', 'Controller'); class AppController extends Controller { public $components = array( 'Session', 'Auth' => array( 'loginRedirect' => array('controller' => 'posts', 'action' => 'index'), 'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home'), 'authorize' => array('Controller') // Ligne ajoutée ) ); public function isAuthorized($user) { // Admin peut accéder à toute action if (isset($user['group_id']) && $user['group_id'] === 'admin') { return true; } // Refus par défaut return false; } }
j'arrivais à me logguer jusqu'à ce que apparaisse ceci (voir piece jointe)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <div class="users form"> <?php echo $this->Session->flash('auth'); ?> <?php echo $this->Form->create('User');?> <fieldset> <legend><?php echo __('Merci de rentrer votre nom d\'user et mot de passe'); ?></legend> <?php echo $this->Form->input('username'); echo $this->Form->input('password'); ?> </fieldset> <?php echo $this->Form->end(__('Connexion'));?> </div>
j'ai essayé avec tous mes navigateurs, c'est le meme message!!
franchement, je ne comprends pas, expliquez moi svp qu'es ce qui bug !!!
merci d'avance
Partager