やっぱりACLは難しい。整理の意味も含めてもう一度入門しておく。(今回はCakePHP1.3.2です)
次にusersコントローラー。
スポンサードリンク
controllers/users_controller.php
<?php class UsersController extends AppController { var $name = 'Users'; var $helpers = array('Html', 'Form'); function beforeFilter() { parent::beforeFilter(); //$this->Auth->allowedActions = array('*'); //$this->Auth->allow = array('*'); //$this->initDB(); // for password validation if(!empty( $this->data['User']['password1'])){ $this->data['User']['password'] = $this->data['User']['password1']; } } function initDB() { $group =& $this->User->Group; App::import('Model', 'Group'); //$Group = ClassRegistry::init('Group'); $group = new Group(); // 管理者グループには全てを許可する $group->id = 1; $this->Acl->allow($group, 'controllers'); // ユーザグループ $group->id = 2; $this->Acl->deny($group, 'controllers'); $this->Acl->allow($group, 'controllers/hoge/indext'); $this->Acl->allow($group, 'controllers/Users/logout'); } function login() { } function logout() { $this->Session->setFlash('Good-Bye'); $this->redirect($this->Auth->logout()); } function index() { $this->User->recursive = 0; $this->set('users', $this->paginate()); } function view($id = null) { if (!$id) { $this->Session->setFlash(__('Invalid User.', true)); $this->redirect(array('action'=>'index')); } $this->set('user', $this->User->read(null, $id)); } function add() { if (!empty($this->data)) { $this->User->create(); if ($this->User->save($this->data)) { $this->Session->setFlash(__('The User has been saved', true)); $this->redirect(array('action'=>'index')); } else { $this->Session->setFlash(__('The User could not be saved. Please, try again.', true)); } } $groups = $this->User->Group->find('list', array('order' => array('Group.id' => 'desc'))); $this->set(compact('groups')); } function edit($id = null) { if (!$id && empty($this->data)) { $this->Session->setFlash(__('Invalid User', true)); $this->redirect(array('action'=>'index')); } if (!empty($this->data)) { if ($this->User->save($this->data)) { $this->Session->setFlash(__('The User has been saved', true)); $this->redirect(array('action'=>'index')); } else { $this->Session->setFlash(__('The User could not be saved. Please, try again.', true)); } } if (empty($this->data)) { $this->data = $this->User->read(null, $id); } $groups = $this->User->Group->find('list', array('order' => array('Group.id' => 'desc'))); $this->set(compact('groups')); } function delete($id = null) { if (!$id) { $this->Session->setFlash(__('Invalid id for User', true)); $this->redirect(array('action'=>'index')); } if ($this->User->delete($id)) { $this->Session->setFlash(__('User deleted', true)); $this->redirect(array('action'=>'index')); } } } ?>
コメント