CanCan Permissions - должны ли они быть явными?
Я новичок в RoR и использую CanCan для авторизации. Мне интересно, должен ли я быть явным с каждой отдельной способностью, которую может иметь пользователь.
Я, вероятно, недостаточно ясен, поэтому выложу код, чтобы проиллюстрировать мой вопрос.
if user.is_admin?
can :manage, all
end
if user.is_director?
can :update, Camp
end
В этом случае директор сможет обновить только лагерь? Или я должен был бы обозначить то, что он / она определенно не может сделать также?
Заранее спасибо.
2 ответа
Если вы добавили check_authorization
на ваш ApplicationController
, тогда да, по умолчанию он будет заблокирован для всех действий контроллера, если специально не перезаписано skip_authorization_check
,
Посмотрите это обсуждение GitHub вокруг этой проблемы.
Если я правильно помню момент, когда вы реализуете CanCan, вы должны явно указать, пока вы вызываете authorize_resource
(или же load_and_authorize_resource
) в соответствующем контроллере.
Так что да (если вы вызываете один из методов авторизации в CampController
).
(Также роль директора не должна пересекаться с ролью администратора;) Если она это делает, она просто получает все разрешения. И не правда ли :all
?)