Je suis actuellement en train de créer une application Rails et d'essayer de déterminer la meilleure façon d'authentifier qu'un utilisateur possède l'objet de données qu'il essaie de modifier. J'ai déjà un système d'authentification en place (reposful-authentication), et j'utilise un simple before_filter pour m'assurer qu'un utilisateur est connecté avant de pouvoir accéder à certaines zones du site. Cependant, je ne suis pas sûr de la meilleure façon de gérer un utilisateur essayant de modifier une donnée spécifique - par exemple, disons que les utilisateurs de mon site peuvent posséder des Livres, et qu'ils peuvent modifier les propriétés du livre (titre , auteur, pages, etc), mais ils devraient seulement être en mesure de le faire pour les livres qui leur appartiennent.Autorisation de l'utilisateur Rails
Dans ma méthode 'edit' sur le contrôleur de livres, j'aurais une recherche qui ne récupèrerait que les livres appartenant à current_user. Cependant, si un autre utilisateur connaissait l'identifiant du livre, il pouvait taper http://website.com/book/7/edit, et le contrôleur vérifierait qu'il était connecté, puis afficherait la page d'édition de ce livre (semble contourner le contrôleur).
Quelle est la meilleure façon de gérer cela? Est-ce plus un problème de routage de convention Rails que je ne comprends pas (pouvoir accéder directement à la page d'édition), ou devrais-je ajouter des callbacks before_find, before_save, before_update, after_find etc. à mon modèle?
Je n'avais pas réalisé que c'était quelque chose qui nécessiterait un plugin - merci pour les conseils. Je crois que je vais aller avec le plugin Cancan. –
Je vous conseillerais de choisir authlogic. :) –
Vous pouvez également considérer ma gemme, Autorité: https://github.com/nathanl/authority –