Comment rendre les vues en fonction du rôle de l'utilisateur sur Rails 5.1


Carlo Teran |

Je travaille actuellement sur une application Rails 5.1 qui a deux rôles d'utilisateur différents : "Admin" et "Client". (Je stocke les rôles dans une colonne nommée "rôle" #string sur la table de l'utilisateur).

Je recherche le moyen le plus efficace de rendre différentes vues en fonction du rôle de l'utilisateur. par exemple

  • Si un utilisateur avec le user.role = "Customer" se connecte, je souhaite afficher customer#index

  • Si un utilisateur avec le user.role = "Admin" se connecte, je voudrais rendre admin#index

À l'heure actuelle, la racine de la route est "admin#index". Existe-t-il un moyen de modifier la route racine en fonction du rôle de l'utilisateur actuel ?

Tous les conseils sur la manière la plus efficace de rendre différentes vues en fonction du rôle de l'utilisateur seront appréciés ! Merci beaucoup!

Riz Rockwell

Vous pouvez spécifier l' after_sign_in_path_foritinéraire d'une ressource. Donc

contrôleur_application.rb

....

def after_sign_in_path_for(resource)
  if resource.role == "Customer"
    customers_path (or whatever the name of the path is in your routes)
  elsif resource.role == "Admin"
    admins_path (same here, whatever the name of the path is in your routes)
  else
    super
  end
end

....

Il existe un tas de méthodes comme celle-ci que vous pourriez trouver utile de creuser, pour celle-ci spécifique https://www.rubydoc.info/github/plataformatec/devise/Devise/Controllers/Helpers:after_sign_in_path_for , ou pour toutes les options https : //www.rubydoc.info/github/plataformatec/devise/Devise/Controllers/Helpers .

Articles connexes


rendre des parties du modèle en fonction du rôle de l'utilisateur

Sorebrez Ma question concerne l'affichage uniquement des parties d'un modèle pour lesquelles un utilisateur est autorisé. Supposons qu'il existe un projet avec uniquement des utilisateurs et des rôles d'utilisateur et ses modèles et contrôleurs générés par phx

Jenkins limite les vues en fonction de l'utilisateur

Housni J'ai quelques emplois chez Jenkins. J'ai aussi quelques utilisateurs. Je voudrais autoriser certains utilisateurs à afficher uniquement certaines tâches Jenkins. Par exemple, je pourrais avoir les utilisateurs suivants: habitent mise en scène et les emp