Добавление ограничения аутентификации с помощью Devise - PullRequest
1 голос
/ 19 августа 2011

Я работаю над приложением Rails 3.1 с Devise для аутентификации. В моем приложении есть сайты и пользователи, причем пользователи имеют доступ только к некоторым сайтам (определенным при создании пользователя). Что я пытаюсь сделать, так это то, что при входе, помимо предоставления электронной почты и пароля, пользователь должен выбрать сайт, и вход будет успешным, только если выбранный сайт является одним из сайтов, к которым у пользователя есть доступ. Для этого я переопределил Devise :: SessionsController следующим образом:

class SessionsController < Devise::SessionsController
  def create
    user = User.find_by_email params[:user][:email]
    site = Site.find_by_id params[:user][:site_id]
    if user && user.can_access_site?(site)
      super
      if user_signed_in?
        user_session[:site_id] = site.try(:id)
      end
    else
      redirect_to new_user_session_path, :alert => t('devise.failure.invalid')
    end
  end
end

Но это не работает: похоже, что аутентификация пользователя уже была выполнена (т.е. @current_user установлена) до моего вызова super. Есть идеи, как мне добиться того, что я пытаюсь сделать? Thx!

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