client_management/app/models/c_panel_user.rb

84 lines
2.1 KiB
Ruby

class CPanelUser
include Mongoid::Document
include Mongoid::Timestamps
include ActiveModel::SecurePassword
field :email
field :fullname
field :address
field :phone_number
field :registered, type: Boolean, default: false
field :password_digest, type: String
field :confirmation_token, type: String
field :reset_token, type: String
field :first_time_run, type: Boolean, default: true
field :registered_site_ids, type: Array, default: []
has_secure_password
has_many :site_requests
validates :email, uniqueness: true
validates :password, :on => [:create], length: {:in => 8..20}
def generate_confirmation_token
self.confirmation_token = SecureRandom.hex(5)
self.save
ResetCPanelPasswordMailer.send_user_confirmation(self).deliver
end
def is_confirmed?
self.confirmation_token.nil?
end
def name
self.fullname.nil? ? self.email : self.fullname
end
def generate_reset_token
self.reset_token = SecureRandom.hex(5)
self.save
end
def registered_sites
RegisteredSite.find(self.registered_site_ids) rescue []
end
def send_password_reset_email
self.generate_reset_token
ResetCPanelPasswordMailer.reset_user_password(self).deliver
end
def self.check_password_token(reset_token = nil)
user = self.find_by(reset_token: reset_token) rescue nil
token_status = user.present?
if token_status
true
else
false
end
end
def update_password(password, password_confirmation)
self.update_attributes(password: password, password_confirmation: password_confirmation, reset_token: nil, registered: true)
self.save
end
def self.confirm_email(confirmation_token = nil)
if confirmation_token
user = self.find_by(confirmation_token: confirmation_token) rescue nil
token_status = user.present?
case token_status
when true
user.confirmation_token = nil
user.save
return {:success => "true", :id => user.id.to_s}
when false
return {:success => "false"}
end
else
return {:success => "false"}
end
end
end