Est-il possible de rediriger les utilisateurs vers différentes pages (en fonction du rôle) après s'être connecté avec Devise? Il semble seulement rediriger vers la racine: vers => ... page définie dans routes.rb
Merci!
Par défaut, Devise route vers root après ses actions. Il y a un bel article sur la substitution de ces actions sur le Wiki Devise, https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful -sign-in
Ou vous pouvez aller encore plus loin en définissant stored_locations_for(resource)
sur nil, puis avoir des redirections différentes pour chaque action, c'est-à-dire: after_sign_up_path(resource)
, after_sign_in_path(resource)
et ainsi de suite.
vous pouvez simplement ajouter cette méthode à votre contrôleur d'application
def after_sign_in_path_for(resource)
user_path(current_user) #your path
end
collez uniquement le code ci-dessous sur le contrôleur d'application ou n'importe quel contrôleur, vous devez effectuer l'opération;
def after_sign_in_path_for(resource)
users_path
end
Devise a une méthode d'assistance (after_sign_in_path_for) qui peut être utilisée pour remplacer la route par défaut de Devise à la racine après la connexion/connexion.
Pour implémenter une redirection vers un autre chemin après la connexion, ajoutez simplement cette méthode à votre contrôleur d'application.
#class ApplicationController < ActionController::Base
def after_sign_in_path_for(resource)
users_path
end
Où chemin_utilisateurs est le chemin vers lequel vous souhaitez qu'il redirige, tilisateur est le nom du modèle qui correspond au modèle pour Devise.
N/B: Si vous avez utilisé Admin comme nom de modèle pour Devise, il sera
#class ApplicationController < ActionController::Base
def after_sign_in_path_for(resource)
admins_path
end
C'est tout.
j'espère que cela aide
J'ai utilisé l'exemple 1:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :authenticate_user!
protected
def after_sign_in_path_for(resource)
current_user.is_a?(Admin) ? admin_tests_path : (stored_location_for(resource) || root_path)
end
end