Cakephp - авторизованная проверка внутри другого действия контроллера - PullRequest
2 голосов
/ 05 марта 2012

допустим, у меня в контроллере есть функция isAuthorized(), которая проверяет, есть ли у пользователя разрешение на выполнение действий контроллера add и edit. Теперь предположим, что я нахожусь внутри действия контроллера my_custom_action. Как проверить, есть ли у моего пользователя разрешение на выполнение действий add и edit внутри действия моего контроллера my_custom_action, используя что-то вроде:

$this->Auth->isAuthorized();

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 января 2013

Это проверяет, является ли текущий пользователь, запрашивающий 'my_custom_action', администратором, и если это так, предоставит доступ.

public function isAuthorized($user) {

        if (in_array($this->action, array('my_custom_action'))) {

             if ($this->Auth->user('is_admin')) 
                return true; 
             else 
                return false;
        }
}
0 голосов
/ 05 марта 2012

В app_controller я создал эту (своего рода) функцию. Сначала я проверяю используемый контроллер, а затем проверяю действие для контроллера. Вы также можете попробовать эту статью о пекарне ' Простое управление на основе моделей '.

function isAuthorized() {
    switch($this->name) {
        case 'Everyone': /* EveryoneController */
            return true;
            break;
        case 'Banned': /* BannedController */
            $this->Auth->authError = __('You do not have permission to ', true).$this->action.' '.strtolower($this->name);
            return false;
            break;
        default:
            switch($this->action) {
                case 'index':
                    return true;
                    break;
                case 'add':
                case 'edit':
                case 'delete':
                    if (/* permission check */) {
                        return true;
                    } else {
                        $this->Auth->authError = __('You do not have permission to ', true).$this->action.' '.strtolower($this->name);
                        return false;
                    }
                    break;
                default:
                    return true;
                    break;
            }
            break;
    }
}
...