Devise
devise gem github url: https://github.com/plataformatec/devise
[01] add devise gem
gem 'devise'
[02] install gem
$bundle install
[03] run generator
$rails generate devise:install
[04] generate model
$rails generate devise User
$rails db:migrate
[05] edit config/environments/development.rb add line
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
[06] edit app/views/layouts/application.html.erb add lines
<div id=user_nav>
<% if user_signed_in? %>
<p> Logged in as <strong><%= current_user.email %></strong>. </p>
<%= link_to "Edit Profile", edit_user_registration_path %> |
<%= link_to "Logout", destroy_user_session_path, method: :delete %>
<% else %>
<%= link_to "Sign up", new_user_registration_path %> |
<%= link_to "Login", new_user_session_path %>
<% end %>
</div>
<% flash.each do |name, msg| %>
<%= content_tag :div, msg, id: "flash_#{name}" %>
<% end %>
[07] copy Devise views
$rails g devise:views
Customize Sign_in to Login
[08] edit config/locales/devise.en.yml edit linessigned_in: "Logged in successfully."
signed_out: "Logged out successfully."
already_signed_out: "Logged out successfully."
[09] edit views/devise/sessions/new.html.erb
[10] edit routes.rb
devise_for :users, path_names: {sign_in: "login", sign_out: "logout"}
Login as username
[11] add username column in users table$rails g migration add_username_to_users username
$rails db:migrate
[12] edit views/devise/sessions/new.html.erb
<div class="field">
<%= f.label :username %><br />
<%= f.text_field :username, autofocus: true %>
</div>
[13] edit config/initilizers/devise.rb
config.authentication_keys = [:username]
config.case_insensitive_keys = [:username]
config.strip_whitespace_keys = [:username]
[14] edit user.rb add line
validates_presence_of :username
[15] edit application_controller.rb add lines
before_action :configure_permitted_parameters, if: :devise_controller?
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up) do |user_params|
user_params.permit({ roles: [] }, :email, :username, :password, :password_confirmation)
end
end
restrict article content
[16] edit articles_controller.rb add linebefore_action :authenticate_user!, except: [:index, :show]
*** before_action is a new syntax for before_filter
No comments:
Post a Comment