25 lines
668 B
Ruby
25 lines
668 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Users
|
|
module_function
|
|
|
|
def from_omniauth(oauth)
|
|
user = User.find_by(email: oauth.info.email.to_s.downcase)
|
|
|
|
return user if user
|
|
|
|
case oauth['provider'].to_s
|
|
when 'google_oauth2'
|
|
User.new(email: oauth.info.email,
|
|
first_name: oauth.extra.id_info.given_name,
|
|
last_name: oauth.extra.id_info.family_name)
|
|
when 'microsoft_office365'
|
|
User.new(email: oauth.info.email,
|
|
first_name: oauth.info.first_name,
|
|
last_name: oauth.info.last_name)
|
|
when 'github'
|
|
User.new(email: oauth.info.email, first_name: oauth.info.name)
|
|
end
|
|
end
|
|
end
|