Невозможно создать два поведения на заказ для разработки, одно для пользователя другого для admin_user

StackOverflow https://stackoverflow.com/questions/9317991

Вопрос

Я использую Active_Admin в моем приложении Rails. Раньше я использовал пользовательскую страницу в разработке входа в систему. Теперь проблема в том, что одна и та же пользовательская страница визуализируется, если вход Active_Admin также не удается.

Я застрял с этой проблемой и слишком далеко за своей разработкой, чтобы отказаться от Active_admin. Пожалуйста помоги.

Мое определение Customfailure здесь:

class CustomFailure < Devise::FailureApp
  def redirect_url 
    signin_path
  end

  def respond
    if http_auth? 
      http_auth
    else
      redirect
    end
  end
end

Может ли кто -нибудь сказать мне, как изменить код, чтобы перенаправить пути для пользователя Signin не удалось, а Admin_user Signin не удалось. Мой путь подписи пользователя администратора: admin_user_session_path

Это было полезно?

Решение

Вы должны использовать область, чтобы решить это:-

class CustomFailure < Devise::FailureApp 
  def redirect_url 
    if warden_options[:scope] == :user 
      signin_path 
    else 
      new_admin_user_session_path 
    end 
  end 
  def respond 
    if http_auth? 
      http_auth 
    else 
      redirect 
    end 
  end 
end 

надеюсь это поможет :)

Другие советы

Application_controller.rb

...
def after_sign_in_path_for(resource_or_scope)
  if admin_user
   redirect_to whatever_path
  else
   root_path
  end
end
...

Я могу не знать правильный звонок для пользователя администратора, но это должно работать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top