CanCan + Devise для пользовательской модели устройства - PullRequest
1 голос
/ 27 июля 2011

Используя devise , у меня есть модель User.У меня нет пользовательского контроллера.

Чтобы использовать CanCan, мне нужно сделать (ниже) вверху моих контроллеров

# Authorization w Devise & CanCan
before_filter :authenticate_user! # Devise, signed in users only
load_and_authorize_resource # CanCan

Где я могу добавить это, чтобы у меня были разрешения дляПользовательская модель дана, у меня нет пользовательского контроллера?

Спасибо

1 Ответ

7 голосов
/ 27 июля 2011

Вы можете добавить этот код на любой контроллер, для которого вам нужна аутентификация, вам не нужно UsersController

before_filter :authenticate_user!

эта строка требует, чтобы действительный пользователь выполнил вход с помощью devise, поэтому если вы попытаетесь получить доступ к контроллеру с помощью before_filter без регистрации, вы будете перенаправлены devise на sign_in_path

load_and_authorize_resource # CanCan

эта другая строка заполнит переменную экземпляра значением по умолчанию (если оно еще не установлено), а затем проверит ваши привилегии с помощью класса Ability, поэтому при условии, что у вас есть ArticleController, он сделает следующее за кулисами ( фактический код основан на текущем действии)

# for the show action
@article = Article.find(params[:id])
raise CanCan::AccessDenied unless can(:read, @article)

Оператор can(:read, @article) является сердцем библиотеки CanCan, он будет возвращать логическое значение, основанное на вашем классе способностей. Можете прочитать больше об этом здесь

Если все ваше приложение требует аутентификации, вы можете просто добавить строку before_filter :authenticate_user! в ApplicationController

...