employee login and authentication with session

This commit is contained in:
Min Zeya Phyo
2017-04-14 22:47:44 +06:30
parent c1e61c1a39
commit db75780267
27 changed files with 137 additions and 96 deletions

View File

@@ -1,17 +1,55 @@
class Employee < ApplicationRecord
include BCrypt
has_secure_password
#attr_accessor :password
validates_presence_of :name, :role, :password
validates_presence_of :name, :role
validates_presence_of :password, :on => [:create]
validates :emp_id, uniqueness: true, numericality: true, length: {in: 1..4}, allow_blank: true
validates :password, numericality: true, length: {in: 3..9}, allow_blank: true
def password
@password ||= Password.new(password_hash)
def self.login(emp_id, password)
user = Employee.find_by_emp_id(emp_id).authenticate(password)
Rails.logger.debug user
if (user)
user.generate_token
user.session_expiry = DateTime.now.utc + 30.minutes
user.session_last_login = DateTime.now.utc
user.save
return user
end
return nil
end
def password=(new_password)
@password = Password.create(new_password)
self.encrypted_access_code = @password
def self.authenticate_by_token(session_token)
user = Employee.find_by_token_session(session_token)
if user && user.session_expiry.utc > DateTime.now.utc
#Extend the login time each time authenticatation take place
user.session_expiry = DateTime.now.utc + 30.minutes
user.save
return true
else
return false
end
end
def self.logout(session_token)
user = Employee.find_by_token_session(session_token)
if user
user.token_session = nil
user.session_expiry = nil
user.save
end
end
def generate_token
update_column :token_session, SecureRandom.hex(10)
rescue ActiveRecord::RecordNotUnique
retry
end
end