Придумать, как добавить зарегистрированную проверку в пользовательский контроллер сессий? - PullRequest
0 голосов
/ 23 марта 2012

Я пытаюсь использовать вспомогательный метод контроллера Devise Sign_in? чтобы проверить, подписан ли уже пользователь, если да, то я хочу перенаправить на определенную страницу.

Я пробовал это, но подписал? метод всегда возвращает истину, как я могу заставить эту работу?

class SessionsController < Devise::SessionsController
  def new
    redirect_to root_url 
  end

  def create
    if signed_in?(resource_name)
      redirect_to where_-_want_to_url
    else  
      resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#failure")

      return sign_in_and_redirect(resource_name, resource)
    end
  end

  def sign_in_and_redirect(resource_or_scope, resource=nil)
    scope = Devise::Mapping.find_scope!(resource_or_scope)
    resource ||= resource_or_scope
    sign_in(scope, resource) unless warden.user(scope) == resource
    return render :json => {:success => true, :redirect => stored_location_for(scope) || after_sign_in_path_for(resource)}
  end

  def failure      
    return render :json => { :success => false }
  end

end

Ответы [ 2 ]

0 голосов
/ 24 марта 2012

Вы пробовали if user_signed_in?

Теперь я действительно не уверен, чего вы пытаетесь достичь, но я бы не стал определять мою маршрутизацию таким образом в контроллере.Я бы сделал что-то вроде этого:

# config/routes.rb
authenticated :user do
  root :to => where_I_want_to_url
end
root :to => 'welcome#index'
0 голосов
/ 24 марта 2012

Вы хотите, чтобы жить в помощнике.

Когда пользователь входит в систему, сохраните его как current_user

self.current_user = user

Чтобы проверить, вошел ли пользователь в систему, вы можете использовать

def signed_in?
  !current_user.nil?
end

От Майкла Хартла http://ruby.railstutorial.org/chapters/sign-in-sign-out#sec:current_user

Edit:

Извините, я только что прочитал правку. Вы хотели Devise's.

Как работает def 'signature_in?' выглядит как?

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

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