• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 17/01/2017

Permettez à vos utilisateurs de se connecter

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Maintenant que votre premier utilisateur est en base de données, vous allez réaliser un formulaire de connexion sur votre site pour que celui-ci puisse se connecter.

Créez votre contrôleur

Créez un contrôleur pour gérer une page d’accueil ainsi qu’une page de connexion accompagnée de son formulaire :

rails generate controller users home login
# app/views/layout/application.html.erb (body)
<div><%= flash[:info] %></div>
<%= yield %>
# app/views/users/home.html.erb
<h1>Bienvenue !</h1>
<a href="/users/login">S'identifier</a>
# app/views/users/login.html.erb
<h1>Connexion</h1>
<a href="/users/home">Retourner à l'accueil</a>
<%= form_tag "/users/login", method: :post do %>
  <input type="text" name="name" />
  <input type="password" name="password" />
  <input type="submit" value="Se connecter" />
<% end %>

Le formulaire est en place, il faut maintenant créer une nouvelle fonction dans le contrôleur pour récupérer les données saisies et vérifier que le couple name/password soit correct. Pour cela, votre contrôleur doit ressembler à ceci :

# app/controllers/users_controller.rb
class UsersController < ApplicationController
  def home
  end

  def login
  end

  def check
    @current_user = User.where(name: params[:name], password: params[:password]).first
    if @current_user
      flash[:info] = "Bienvenue #{@current_user.name} !"
      redirect_to "/users/home"
    else
      flash[:info] = "Échec de la connexion"
      redirect_to "/users/login"
    end
  end
end
# config/routes.rb
Rails.application.routes.draw do
  get 'users/home' => 'users#home'
  get 'users/login' => 'users#login'
  post 'users/login' => 'users#check'
end

Lancez le serveur et testez la page http://localhost:3000/users/home : cliquez sur le lien pour s’identifier et saisissez les identifiants créés dans la console rails dans le chapitre précédent. Un message flash vous indiquera si la connexion s’est bien déroulée.

Malheureusement, l’état de votre connexion est éphemère : une fois que vous changez de page, plus rien ne permet de savoir que vous êtes connecté. Rendez-vous au chapitre suivant pour résoudre ce problème !

Protégez les mots de passe de vos utilisateurs

Pour ceux qui veulent aller plus loin, pensez au fait que les mot de passes sont ici stockés en clair dans la base de données. Cela veut dire que si quelqu’un a accès à la base de données, il aura accès aux mots de passe de tout le monde. Pour régler ce problème, penchez vous sur la gem bcrypt, dont l'usage avec Rails est documenté ici : http://api.rubyonrails.org/classes/ActiveModel/SecurePassword/ClassMethods.html

Exemple de certificat de réussite
Exemple de certificat de réussite