2015年6月30日火曜日

Cakephpにおける認証設定

Cakephpにおける認証設定

1. AppControllerに太字部分を追加
app]$ vi Controller/AppController.php

public $components = array(
        'Session',
        'Auth'=> array(
            // ログイン後に Users/index へジャンプ
            'loginRedirect' => array('controller' => 'reports', 'action' => 'index'),
            // ログアウト後に /Pages/home へジャンプ
            'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
            'authorize' => array('Controller')
                )
        );

public function isAuthorized($user) {
                if (isset($user['role']) && $user['role'] == 'admin') {
                    return true;
                }
                return false;
        }


roleがadminであればすべてのページがOK、他では全てダメ

2.各コントローラでuserの場合の設定
app]$ vi Controller/UsersController.php

public function isAuthorized($user) {
                if(isset($user['role']) && $user['role'] == 'user') {
                        if($this->action == 'login')return true;
                        if($this->action == 'logout')return true;
                }
                return parent::isAuthorized($user);
        }


roleがuserの場合、アクションがloginとlogoutを許可している。

app]$ vi Controller/ReportsController.php

public function isAuthorized($user) {
                if(isset($user['role']) && $user['role'] == 'user') {
                        if($this->action == 'index') return true;
                        if($this->action == 'add') return true;
                        if($this->action == 'view') return true;
                        if($this->action == 'edit') return true;
                        if($this->action == 'delete') return true;
                        if($this->action == 'sum') return true;
                }
                return parent::isAuthorized($user);
        }


もっとスマートな書き方があるはずですが、コントローラ毎に設定。

まとめ
role : adminの権限はAppControllerで決定
role : userの権限は各コントローラで決定





2015年6月24日水曜日

vsFTPでユーザは自分のディレクトリのみ見られるようにする
(他のディレクトリは見えないようにする)

# vi /etc/vsftpd/vsftpd.conf

chroot_local_user=YES
のコメントをとり有効化する

# service vsftpd restart