• 20 hours
  • Medium

Free online content available in this course.

course.header.alt.is_certifying

Got it!

Last updated on 1/17/17

Permettez à vos utilisateurs de se connecter

Log in or subscribe for free to enjoy all this course has to offer!

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

Example of certificate of achievement
Example of certificate of achievement