Как улучшить компонент авторизации CakePHP для использования типа пользователя? - PullRequest
1 голос
/ 15 января 2010

Я использую Auth Componnet в моем проекте CakePHP

Я добавляю поле типа в таблицу Mysql пользователей

этот тип перечисления: admin, client

Мне нужен компонент авторизации для перенаправления администраторов на страницу CP, а клиента на страницу их профиля и доступ только к одному контроллеру.

конечно без использования ACL или любых других связанных

Ответы [ 3 ]

1 голос
/ 15 января 2010

Я бы порекомендовал воспользоваться функцией isAuthorized (), которую вы можете добавить в контроллер или модель. Установите AuthComponent :: authorize = {'controller' | 'model'}, чтобы выбрать, какой из них вы хотите использовать.

Затем вы пишете функцию isAuthorized () в контроллере модели |, которая возвращает t / f для auth / not auth для каждого действия. Вы также можете выполнить некоторую проверку на уровне строк, если хотите.

Теперь, если вместо этого вы просто хотите перенаправить администратора на его правильные страницы при входе в систему / etc, вы можете добавить код в метод beforeFilter () (либо в конкретном контроллере, либо в app_controller.php). При этом просто проверьте, совпадает ли значение администратора, установленное приложением, со значением администратора пользователя (которое будет сохранено AuthComponent в данных сеанса, доступных для $ this-> Auth-> User ()). Затем направьте соответствующим образом в административные / неадминистративные области.

0 голосов
/ 20 января 2010

Просто на что обратить внимание, но если что-то не изменилось в последнее время, CakePHP не поддерживает типы столбцов ENUM.

Ваша лучшая ставка - это модель группы (таблица групп mysql) и поле group_id в таблице пользователей. Затем вы можете $ hasOne = array ('Group'); в вашей модели пользователя.

Оттуда вы можете следовать любому из ОГРОМНОГО количества учебных пособий по групповому управлению доступом для компонента Auth с помощью простого поиска в Google по «CakePHP Auth User Group»

0 голосов
/ 17 января 2010

isAuthorized () - лучший выбор. я бы порекомендовал отделить пользователей от их групп в базе данных, так что User habtm Group ... но это не проблема, если пользователь принадлежит к одной и только одной группе Я не рекомендую ACL для системы разрешений без уровня записи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...