Implémenter la fonction de connexion en utilisant gem'devise ' Remplacez la connexion par nom et mot de passe par mot de passe et par courrier électronique.
Gemfile
#Ajouté en bas
gem 'devise'
Exécutez la commande sous le terminal après avoir édité le Gemfile
Terminal
bundle install
rails g devise:install
rails g devise User
rails db:migrate
Cependant, cette fois, j'ai décidé de me connecter par nom, alors modifiez le fichier de migration avant rails db: migrate.
db/migrate
#t.timestamps null:Ajouter ci-dessus false
t.string :name
Terminal
rails g devise:view
À propos, dans le fichier créé, les inscriptions sont une nouvelle inscription et les sessions sont un fichier lié à la connexion.
:app/views/devise/sessions/new.html.erb
<h2>Log in</h2>
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
</div>
(Omis car il n'y a pas de changement après cela)
<% end %>
<%= render "devise/shared/links" %>
Remplacez l'email par nom et email_field par text_field
:app/views/devise/registrations/new.html.erb
#Ajouté au-dessus de la balise email div
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
</div>
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_action :configure_premitted_parameters, if: :devise_controller?
protected
def configure_premitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :email])
devise_parameter_sanitizer.permit(:sign_in, keys: [:name])
end
end
Presque terminé avec ce
Terminal
rails g controller home top
:app/views/home/top.html.erb
<h1>Home#top</h1>
<%= link_to "Se déconnecter", destroy_user_session_path, method: :delete %>
Je veux pouvoir me déconnecter, j'utilise donc la méthode link_to pour créer un bouton de déconnexion. Ajoutez ce qui suit à application_controller.rb
app/controllers/application_controller.rb
#Ajouter en haut de protégé
def after_sign_in_path_for(resource)
home_top_path
end
cinfig/initializers/devise.rb
#Décommentez ce qui suit à la ligne 49
config.authentication_keys = [:email]
#Changer l'e-mail ci-dessus en nom
config.authentication_keys = [:name]
Notez que vous ne pouvez pas vous connecter par nom sans cela!
c'est tout.
Recommended Posts