class WinewooCore::Repositories::Mongo::WinewooUsersMongoRepo

Constants

SOCIAL_NETWORKS

Public Instance Methods

create(params) click to toggle source
# File lib/winewoo_core/repositories/mongo/winewoo_users_mongo_repo.rb, line 12
def create(params)
  wuser = user_with_social_network_or_params(params)
  WinewooUserDevicesMongoRepo.new.create(wuser, params) if wuser.persisted?
  return wuser
end
get(wuser_id) click to toggle source
# File lib/winewoo_core/repositories/mongo/winewoo_users_mongo_repo.rb, line 7
def get(wuser_id)
  User.find(wuser_id)
end
update(wuser_id, params) click to toggle source
# File lib/winewoo_core/repositories/mongo/winewoo_users_mongo_repo.rb, line 19
def update(wuser_id, params)
  wuser = self.get(wuser_id)
  return unless wuser
  wuser.update_attributes(params.get)
  return wuser
end

Private Instance Methods

generate_email() click to toggle source
# File lib/winewoo_core/repositories/mongo/winewoo_users_mongo_repo.rb, line 52
def generate_email
  token = SecureRandom.urlsafe_base64
  email = "winewooer-#{token}@winewoo.com"
  return User.find_by(email: email) ? generate_email : email
end
user_with_social_network_or_params(params) click to toggle source
# File lib/winewoo_core/repositories/mongo/winewoo_users_mongo_repo.rb, line 29
def user_with_social_network_or_params(params)
  user_params = params.get

  user = nil

  SOCIAL_NETWORKS.each do |sn|
    user = User.find_by(sn => user_params[sn]) if user_params[sn]
  end

  unless user
    user = User.create(user_params)
    user.user_roles = [:winewoo_user]
    user.email = generate_email if user.email.blank?
    user.password = Devise.friendly_token.first(8) if user.password.blank?
    user.confirmed_at = Time.now
    user.save
    user.errors.each {|k,v| user.errors[k].uniq!}
  end

  return user
end