Table des matières
Les filtres Ce sont des outils de Rails qui nous permettent d'intercepter les appels aux méthodes et aux actions, nous permettant d'ajouter nos méthodes avant, pendant ou après, afin que nous puissions contrôler le flux de l'application comme bon nous semble afin de remplir nos fonctionnalités. A ce stade, nous allons utiliser le avant filtre pour intercepter les appels à nos actions, de cette manière, nous pouvons vérifier la session et savoir si l'utilisateur est connecté, sinon nous les redirigeons vers l'endroit où nous nous sommes arrangés. Nous allons placer cette méthode dans notre contrôleur d'application car c'est la base et de cette façon elle sera disponible pour toute l'application.
Voyons le code que nous avons pour cela :
def autoriser à moins que session [: user_id] flash [: notice] = "Veuillez vous connecter" redirect_to (: controller => "login",: action => "login") end end
Comme nous voyons que la logique derrière cela est assez simple, nous utilisons le propre conditionnel de Ruby qui est le à moins que, cela nous permet de conditionner qu'à moins que la condition ne soit remplie, le code du bloc est exécuté. Donc à moins d'avoir l'identifiant d'un utilisateur en session nous allons le rediriger et lui demander de s'authentifier dans l'application.
Maintenant, dans notre contrôleur administrateur, nous allons filtrer et demander aux utilisateurs de s'authentifier :
classe AdminController <ApplicationController before_filter : autoriser
Et dans notre contrôleur de connexion, nous faisons également quelque chose de similaire, seulement nous ajouterons l'exception de l'action de connexion qui est celle qui nous intéresse et qui peut être vue par tout utilisateur non authentifié :
classe LoginController : login
Si nous ne sommes pas connectés, nous devrions voir quelque chose comme ceci lors de l'accès à la page d'administration de l'application :
Voyons le code :
before_destroy: dont_destroy_dave def dont_destroy_dave relance "Impossible de détruire dave" if self.name == 'dave' end
Ensuite, dans notre action de suppression, nous allons capturer le message et l'afficher, voyons le code d'action :
def delete_user id = params [: id] if id && user = User.find (id) begin user.destroy flash [: notice] = "User # {user.name} delete" rescue flash [: notice] = "Can ' t supprimer cet utilisateur "end end redirect_to (: action =>: list_users) end
Avec cela nous terminons notre tutoriel sur la limitation de l'accès à notre application, il est important de couvrir toutes les possibilités pour empêcher les utilisateurs non autorisés de voir ou de modifier notre partie administrative, ceci pour éviter les futurs maux de tête et problèmes de sécurité qui rendront notre application peu sûre et instable.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif