Rinku Kushwah blog: Without Devise sign in and Sign Up

 

Without devise sign_in sign_up


...................................................................................................................................................................
 .............................................................................................................................................

Step A  :  Gem


     gem 'bcrypt'


 .............................................................................................................................................


                                                                        Step B  : User.rb


User.rb:

 validates :email, presence: true, uniqueness: true
validates :password, presence: true
validates_length_of :password, :minimum => 8


require 'bcrypt'
# before_create :encrypt_password
before_save :encrypt_password
def encrypt_password
self.password = BCrypt::Password.create(self.password)
end


routes:

resources :users do
   resources :comments
   collection do
     get :sign_in
     post :session_create
     delete :session_destroy
    end

  end




 .............................................................................................................................................


                                                                        Step C  : Routes
User_controller.rb:

def session_destroy
    session[:user_id] = nil
    redirect_to root_url, :notice => "Logged out"
  end


  def session_create
    require 'bcrypt'
   user = User.find_by_email(params[:user][:email])
   password =  params[:user][:password]
    if user.present?
        my_password = BCrypt::Password.new(user.password)
      if my_password == password     #=> true
        session[:user_id] = user.id
        redirect_to root_url, :notice => "Logged in!"
      else
        flash.now.alert = "Invalid email or password"
        render "new"
      end
    else
      redirect_to :back, :notice => "Email Not found, please enter correct email."

    end
  end

  def sign_in
    current_user = User.find_by_id(session[:user_id])
    if current_user.present?
      flash[:notice]= "you allready login"
      redirect_to root_url
    else
      @user = User.new
    end
  end

Comments

Popular posts from this blog

Rails 7 Features :: Comparison with Rails 6 and Rails 5