やっぱりACLは難しい。整理の意味も含めてもう一度入門しておく。(今回はCakePHP1.3.2です)
スポンサードリンク
pages_controller.phpをコピーして以下を追加しておく
function beforeFilter() { parent::beforeFilter(); $this->Auth->allowedActions = array('*'); //$this->Auth->allow = array('*'); }
テスト用のコントローラーも作っておく controllers/hoge_controller.php
<?php class HogeController extends AppController { var $name = 'Hoge'; var $helpers = array('Html', 'Form'); var $uses = null; function beforeFilter() { parent::beforeFilter(); } function index(){ debug('test OK'); } function indexa(){ debug('admin only'); } function indext(){ debug('gid1 and gid2'); } } ?>
pages/home.ctp
<?php $this->set('title_for_layout', 'Home'); if($isLogin){ echo '<h2>Hello! ' . $userName . '</h2>'; echo $this->Html->link(__('Logout', true), '/users/logout'); }else{ echo '<h2>Hello! Guest' . '</h2>'; echo $this->Html->link(__('Login', true), '/users/login'); } // test echo '<br /><br /><br /><h3>Test</h3>'; echo $this->Html->link(__('test:Login', true), '/users/login') . '<br />'; echo $this->Html->link(__('test:Logout',true), '/users/logout') . '<br />'; echo $this->Html->link(__('test:Users', true), '/users') . '<br />'; echo $this->Html->link(__('test:Groups',true), '/groups') . '<br />'; echo $this->Html->link(__('test:Hoge/index',true), '/hoge') . '<br />'; echo $this->Html->link(__('test:Hoge/indexa',true), '/hoge/indexa') . '<br />'; echo $this->Html->link(__('test:Hoge/indext',true), '/hoge/indext') . '<br />'; ?> <br /><br /><br /> TOP page, all users access ok.<br />
views/layout/default.ctp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <?php echo $this->Html->charset(); ?> <title> <?php __('TEST:'); ?> <?php echo $title_for_layout; ?> </title> <?php echo $this->Html->meta('icon'); echo $this->Html->css('cake.generic'); echo $scripts_for_layout; ?> </head> <body> <div id="container"> <div id="header"> <h1><?php echo $this->Html->link(__('TEST', true) . '[Beta]', 'http://test.jp/'); ?></h1> </div> <div id="content"> <?php echo $this->Session->flash(); ?> <?php echo $content_for_layout; ?> </div> <div id="footer"> <?php echo "Version:" . Configure::version(); ?> </div> </div> <?php echo $this->element('sql_dump'); ?> </body> </html>
コメント