Devise + CanCan: Определили CRUD, как сказано в Tut, теперь как ограничить использование контроллера - PullRequest
1 голос
/ 04 февраля 2012

Я создал Devise с интеграцией CanCan, как сказано:
http://starqle.com/articles/rails-3-authentication-and-authorization-with-devise-and-cancan-part-1/
http://starqle.com/articles/rails-3-authentication-and-authorization-with-devise-and-cancan-part-2/

Теперь у меня есть два ресурса для моего класса User.Разработайте и ресурсы RESTful: users.
, как упомянуто в руководстве, я включил в RESTful edit_user_path форму для редактирования прав для пользователя.теперь я не понимаю, как я могу ограничить обычных пользователей доступом к этой функции редактирования и использовать для этого функцию редактирования devise.

Можно ли просто ограничить пользователя

can :manage, User

, но он все еще может управлять разработчиком контроллера?

Решено

Просто можете добавить в способность.значения тогда

Редактировать

_form.html.erb (или haml)

<% if can? :assign_roles, @user %>

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

1 Ответ

0 голосов
/ 04 февраля 2012

Если вы хотите быть уверены, что ваши способности проверяются также на уровне контроллера, вы должны добавить load_and_authorize_resource к нему.

class ProductsController < ActionController::Base
  load_and_authorize_resource
end

https://github.com/ryanb/cancan/wiki/authorizing-controller-actions

если вы просто показываете / скрываете ссылки в представлении в зависимости от метода <% if can? %>, пользователь все равно может ввести прямую ссылку, например, на. редактировать действие в адресной строке

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