Accès Web restreint (enregistrements) réalisé avec Ruby on Rails

Table des matières

Dans les applications Web où nous avons des zones privées auxquelles seuls les membres enregistrés doivent accéder, nous devons implémenter des mécanismes qui permettent aux utilisateurs de ne voir qu'une fois qu'ils sont authentifiés.
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 :

Maintenant, nous avons le moyen d'appliquer et de filtrer que les utilisateurs ne peuvent pas voir les panneaux d'administration s'ils ne sont pas connectés, cependant nous avons une dernière incohérence, dans le cadre de l'élimination des utilisateurs, nous devons éviter de supprimer l'administrateur général de l'application car si nous le faisons pas le faire, il est possible qu'un utilisateur supprime tous les utilisateurs et nous restons sans accès à moins que nous modifiions directement la base de données et c'est quelque chose d'inacceptable pour notre application. Pour cela, nous allons créer à nouveau un événement spécial, dans ce cas ce sera le avant_détruire, qu'est-ce que ça fait avant de faire l'action détruire exécuter une méthode.
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
wave wave wave wave wave