Table des matières
Dans nos applications Web, nous devrons presque toujours enregistrer des utilisateurs, nous aurons ainsi des membres de nos magasins, blogs, communautés virtuelles, systèmes administratifs, etc. Pour que l'enregistrement soit efficace et utile, ces utilisateurs doivent pouvoir s'authentifier pour pouvoir saisir des parties qui ont été créées pour les utilisateurs enregistrés, telles que la consultation de leur profil, la gestion de leurs messages, la réalisation d'achats, la rédaction d'articles, etc.Le login est la partie vitale de notre application, il nous permet de séparer le privé du public, il nous permet de savoir quel profil a chaque utilisateur qui entre et ainsi décider ce qu'il peut voir ou non.
Pour que notre application ait cette fonctionnalité, nous avons besoin d'une action dans le contrôleur qui nous permet d'authentifier l'utilisateur en comparant son nom d'utilisateur et son mot de passe avec ce que nous avons dans la base de données, puis une fois que cela se produit, nous devons enregistrer dans la session certaines valeurs qui nous permettent de savoir à tout moment qui est connecté et quel profil et autorisations ils ont, bien sûr ces derniers dépendent beaucoup de la conception de notre application.
A présent, nous devons savoir comment générer un contrôleur et tout ce qui concerne la console rails, nous verrons donc directement le contrôleur et son contenu, ainsi que la logique qui le sous-tend :
def login si request.get? session [: user_id] = nil @user = User.new else @user = User.new (params [: user]) Loged_in_user = @ user.try_to_login if connected_in_user session [: user_id] = Loged_in_user.id redirect_to (: action => "index") else flash [: notice] = "Combinaison utilisateur/mot de passe invalide" end end end
Dans la première partie avec le conditionnel IF de notre contrôleur nous demandons le demandeS'il s'agit de GET, nous nettoyons la session et créons un nouvel objet de type utilisateur, de cette manière nous préparons le chemin pour entrer. Sinon OBTENEZ le demande nous supposons qu'il s'agit de POST, puis nous passons les paramètres du formulaire à notre objet, puis appelons la méthode try_to_login, cette méthode fait des comparaisons du nom d'utilisateur et du mot de passe avec ce que nous avons dans la base de données.
Enfin avec un autre conditionnel nous voyons si l'utilisateur était réellement connecté, nous attribuons des valeurs à la session puis nous redirigeons l'utilisateur vers l'index, sinon nous affichons une erreur avec un message.
Comme nous l'avons vu dans le contrôleur nous appelons des méthodes qui nous permettent de faire les comparaisons correspondantes, maintenant ce dont nous avons besoin est de créer ces méthodes et pour cela nous allons le faire dans le modèle, voyons ce qu'il contient et pourquoi il contient il:
def self.login (nom, mot de passe) hashed_password = hash_password (mot de passe || "") find (: first,: conditions => ["name =? and hashed_password =?", name, hashed_password]) end def try_to_login User.login (self.name, self.password) fin
La méthode connexion c'est simple, il reçoit deux paramètres : nom et mot de passe, puis il interroge la base de données pour ces valeurs.
La méthode try_to_login, ce qu'il fait est d'invoquer la méthode login, de cette façon nous pouvons donner une réponse à l'utilisateur s'il existe ou non dans notre base de données.
Enfin nous créons notre vue et les actions qu'elle va utiliser, dans le fichier application / vues / connexion nous allons créer notre login.rhtml et aussi notre index.rhtml, le premier est assez similaire à la construction de l'utilisateur et ce second nous allons le voir maintenant.
Total des commandes dans le système :
Commandes en attente d'expédition :
Comme on peut le voir, c'est assez simple, il affichera simplement les commandes en attente de l'utilisateur, pour cela dans le contrôleur nous devons incorporer les actions nécessaires :
def index @total_orders = *****. count @pending_orders = *****. count_pending end
Là, on aurait vu le résultat.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif