Как установить сеанс для пользователя при использовании devise gem - PullRequest
2 голосов
/ 06 октября 2010

Кто-нибудь знает, как обрабатывать объект сеанса вручную?Я знаю, что devise хранит его в базе данных, но должен быть способ установить сеанс вручную.

1 Ответ

2 голосов
/ 17 ноября 2010

Попробуйте warden.set_user(resource, :scope => scope)

Это пример проверки того, что пользователь может видеть только те контракты, к которым у него есть доступ.(has_role! и has_no_role! из acl9 - великолепный камень для управления доступом)

describe "GET index (logged in)" do
    it "@contracts contains only contracts on which user has admin role" do
        coA = Factory.create(:contract,:contract_name => "contract_A" )
        coB = Factory.create(:contract,:contract_name => "contract_B" )
        userA = Factory.create(:user, :username => "userA")
        userA.has_role! :admin, coA
        userA.has_no_role! coB
        warden.set_user(userA, :scope => "user")
        get :index, :locale => "fr"
        assigns(:contracts).should eq([coA])
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...