Yii: Как настроить роли в расширениях yii-user?

Я установил yii user extension и теперь пытаюсь добавить дополнительную роль. Я добавил новый столбец в таблицу User db и отредактировал UserModule следующим образом:

public static function isEmployee() {
        if(Yii::app()->user->isGuest)
            return false;
        else {
            if (!isset(self::$_employee)) {
                            //check to see what kind of user we got and include admin for all 
                if(self::user()->type)
                    self::$_employee = true;
                else
                    self::$_employee = false;   
            }
            return self::$_employee;
        }
    }

а затем, когда я пытаюсь вызвать это на остальной части моего сайта, кажется, что доза не работает

'visible' => Yii::app()->user->isEmployee()

Что я делаю неправильно или как лучше всего добавить дополнительную роль, которую я могу вызвать на сайте, как указано выше.


person Gunnit    schedule 11.05.2013    source источник
comment
Вы смотрели yiiframework.com/extension/yii-user-management? ? Он предлагает достойный RBAC, я уже использовал его в продакшене. Простота установки и использования.   -  person adamors    schedule 13.05.2013


Ответы (2)


Я не знаю, какое именно расширение вы установили, но вы перепутали его с компонентом user. Пользовательский компонент - это то, к чему вы можете получить доступ через Yii::app()->user. По умолчанию это CWebUser объект. Вы можете создать свой собственный class WebUser extends CWebUser в каталоге components/. Вы должны сконфигурировать это как user компонент в вашем main.php файле конфигурации.

'components' => array(
    'user' => 'WebUser',
),

Затем вы перемещаете свой isEmployee() метод в этот класс. Поскольку вы не предоставили никаких подробностей о том, какое расширение вы использовали, я не могу помочь вам, как правильно выполнить эту проверку роли. Но мне интересно, не лучше ли вам использовать решение на основе RBAC. Он позволяет создавать роли и назначать их пользователям. Также есть несколько расширений, которые помогут вам управлять ролями и пользователями.

person Michael Härtl    schedule 12.05.2013
comment
привет, спасибо за ответ, это расширение, которое я использовал yiiframework.com/extension/yii-user дайте мне знать, если вы знаете, как добавить к этому роль, спасибо - person Gunnit; 12.05.2013

Yii User не предназначен для добавления ролей пользователям, он только обрабатывает управление учетными записями пользователей.

Вы можете установить дополнительное расширение, например права, auth или srbac (см. list), который предоставляет веб-интерфейс для этой задачи.

person schmunk    schedule 12.05.2013