mirror of
https://github.com/internetee/registry.git
synced 2025-07-23 03:06:14 +02:00
48 lines
1.3 KiB
Ruby
48 lines
1.3 KiB
Ruby
class User < ApplicationRecord
|
|
include Versions # version/user_version.rb
|
|
|
|
ESTONIAN_COUNTRY_CODE = 'EE'.freeze
|
|
TARA_PROVIDER = 'tara'.freeze
|
|
|
|
has_many :actions, dependent: :restrict_with_exception
|
|
|
|
attr_accessor :phone
|
|
|
|
self.ignored_columns = %w[legacy_id]
|
|
|
|
def id_role_username
|
|
"#{self.id}-#{self.class}: #{self.username}"
|
|
end
|
|
|
|
# rubocop:disable Metrics/AbcSize
|
|
def tampered_with?(omniauth_hash)
|
|
# uid_from_hash = omniauth_hash['uid']
|
|
# provider_from_hash = omniauth_hash['provider']
|
|
#
|
|
# begin
|
|
# uid != uid_from_hash ||
|
|
# provider != provider_from_hash ||
|
|
# country_code != uid_from_hash.slice(0..1) ||
|
|
# identity_code != uid_from_hash.slice(2..-1) ||
|
|
# given_names != omniauth_hash.dig('info', 'first_name') ||
|
|
# surname != omniauth_hash.dig('info', 'last_name')
|
|
# end
|
|
false
|
|
end
|
|
# rubocop:enable Metrics/AbcSize
|
|
|
|
def self.from_omniauth(omniauth_hash)
|
|
uid = omniauth_hash['uid']
|
|
provider = omniauth_hash['provider']
|
|
|
|
User.find_or_initialize_by(provider: provider, uid: uid) do |user|
|
|
user.given_names = omniauth_hash.dig('info', 'first_name')
|
|
user.surname = omniauth_hash.dig('info', 'last_name')
|
|
if provider == TARA_PROVIDER
|
|
user.country_code = uid.slice(0..1)
|
|
user.identity_code = uid.slice(2..-1)
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|