Ich kann nicht zwei benutzerdefinierte Verhaltensweisen für Devise erstellen, eines für den Benutzer für admin_user

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

Frage

Ich verwende Active_admin in meiner Rails -App. Zuvor habe ich eine benutzerdefinierte Seite auf dem Devise -Anmeldung fehlgeschlagen. Das Problem ist nun, dass dieselbe benutzerdefinierte Seite gerendert wird, wenn Active_admin Login ebenfalls fehlschlägt.

Ich bin an diesem Problem und zu weit in meiner Entwicklung festgefahren, um Active_admin aufzugeben. Bitte helfen Sie.

Meine CustomFailure -Definition ist hier:

class CustomFailure < Devise::FailureApp
  def redirect_url 
    signin_path
  end

  def respond
    if http_auth? 
      http_auth
    else
      redirect
    end
  end
end

Könnte mir jemand sagen, wie ich den Code so ändern kann, dass es fehlgeschlagen ist, um Pfade für Benutzer zu vermitteln, und die Admin -_user -Signin fehlgeschlagen. Mein Administrator -Benutzer -Signin -Pfad lautet: admin_user_session_path

War es hilfreich?

Lösung

Sie müssen den Bereich verwenden, um dies zu lösen:-

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 

hoffe das hilft :)

Andere Tipps

application_controller.rb

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

Ich kenne vielleicht nicht den richtigen Anruf für den Administratorbenutzer, aber dies sollte funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top