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:
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
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
Post a Comment