init push - laying out the project
This commit is contained in:
82
portal/app/models/user.rb
Normal file
82
portal/app/models/user.rb
Normal file
@ -0,0 +1,82 @@
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: users
|
||||
#
|
||||
# id :uuid not null, primary key
|
||||
# first_name :string
|
||||
# last_name :string
|
||||
# email :string default(""), not null
|
||||
# encrypted_password :string default(""), not null
|
||||
# reset_password_token :string
|
||||
# reset_password_sent_at :datetime
|
||||
# remember_created_at :datetime
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# uid :string
|
||||
# provider :string
|
||||
#
|
||||
class User < ApplicationRecord
|
||||
# Include default devise modules. Others available are:
|
||||
# :confirmable, :lockable, :timeoutable, :trackable and
|
||||
devise :database_authenticatable, :registerable, :omniauthable
|
||||
|
||||
|
||||
def name
|
||||
"#{first_name} #{last_name}"
|
||||
end
|
||||
|
||||
def self.find_or_create_from_auth_hash(auth)
|
||||
user = where(email: auth.info.email).first
|
||||
|
||||
unless user.present?
|
||||
user = where(provider: auth.provider, uid: auth.uid).first_or_initialize
|
||||
user.email = auth.info.email
|
||||
user.password = Devise.friendly_token.first(8)
|
||||
end
|
||||
|
||||
unless user.provider.present?
|
||||
user.provider = auth.provider
|
||||
user.uid = auth.uid
|
||||
end
|
||||
|
||||
user.first_name = auth.info.first_name
|
||||
user.last_name = auth.info.last_name
|
||||
|
||||
user.save!
|
||||
|
||||
user
|
||||
end
|
||||
|
||||
def fullname
|
||||
"#{first_name} #{last_name}"
|
||||
end
|
||||
|
||||
def confirmation_token
|
||||
if read_attribute(:confirmation_token).nil?
|
||||
self.confirmation_token = generate_confirmation_token
|
||||
save!
|
||||
end
|
||||
read_attribute(:confirmation_token)
|
||||
end
|
||||
|
||||
def json_payload
|
||||
{
|
||||
id: id,
|
||||
email: email,
|
||||
first_name: first_name,
|
||||
last_name: last_name,
|
||||
}
|
||||
end
|
||||
|
||||
def admin?
|
||||
%w[mike@wizewerx.com].include?(email)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def generate_confirmation_token
|
||||
token = Devise.friendly_token(10)
|
||||
token = Devise.friendly_token(10) while User.where(confirmation_token: token).count.positive?
|
||||
self.confirmation_token = token
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user