5 votes

Construire des zones d'administration dans Rails - Questions générales

Quel est le format/structure typique pour créer une zone administrative dans une application Rails ?

Plus précisément, je ne sais pas ce qu'il en est de ces sujets :

  • Comment gérer les situations où les ressources d'un modèle sont accessibles à la fois au public et à l'administrateur ? Par exemple, un modèle d'utilisateur où tout le monde peut créer des utilisateurs, se connecter, etc. mais où seul l'administrateur peut voir les utilisateurs, les supprimer/mettre à jour, etc.
  • Quelle est la convention appropriée pour le routage ?
  • Comment structurer les contrôleurs ?
  • Les contrôleurs dupliqués sont-ils considérés comme corrects ? Par exemple, une version administrateur et une version non-administrateur ?

Merci de votre attention !

4voto

Elliot Labs LLC Points 1129

Vous pouvez avoir 2 contrôleurs, l'un pour la partie publique et l'autre pour l'administrateur et utiliser l'espacement des noms de l'administrateur :

map.namespace(:admin, :path_prefix => 'settings', :name_prefix => 'admin_') do |admin|
    admin.resources :users  
end

Il s'agirait d'une carte /settings/users et le contrôleur devrait être précédé du préfixe Admin:: comme Admin::UsersController Le fichier du contrôleur doit également être placé dans un dossier l'administration sous le dossier app/contrôleurs dir.

  • Oui, s'ils rendent votre code plus clair, ce serait un grand désordre si, par exemple, vous aviez le même contrôleur pour les vues admin et public, qui doivent alors rendre des modèles de vue différents selon qu'un administrateur ou un utilisateur normal y accède. De même voir ici pour plus d'informations .

2voto

Stuart Ellis Points 1373

Une série de Railscasts montre une approche qui évite d'avoir une zone d'administration séparée en utilisant des conditions dans les vues et les contrôleurs : Où va l'administration ? .

Il se peut que cela ne corresponde pas à votre cas d'utilisation, mais cela vaut la peine d'y jeter un coup d'œil.

0voto

Toby Hede Points 22128

En plus de la mise en place d'un espace de noms administrateur dans mes routes, j'utilise l'option autorisation_déclarative qui vous permet de définir des rôles pour les utilisateurs et de définir des contrôles d'accès sur les actions du contrôleur ainsi que sur les attributs du modèle. Si un utilisateur tente d'accéder à une action pour laquelle il n'a pas de permission, le plugin redirigera sa requête. Il s'agit d'une méthode très efficace qui permet d'assurer un niveau de sécurité granulaire.

Il existe plusieurs autres plugins dans l'écosystème Rails qui offrent des fonctionnalités similaires.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X