Sha256: 3154dc5392a997f2d2e4e6d21788b278764f60b143fc5e958781809604f879cb

Contents?: true

Size: 950 Bytes

Versions: 3

Compression:

Stored size: 950 Bytes

Contents

module ApiUserAuth
  # Model for social provider registration
  class ProviderToken < ApplicationRecord
    belongs_to :auth_user,
               class_name: 'ApiUserAuth::AuthUser'

    enum provider: %I[facebook google instagram]

    def self.find_by_data(data)
      find_by(
        provider: data[:provider],
        user_id: data[:id]
      )
    end

    def self.create_by_data(data, auth_user)
      if find_by_data(data).blank?
        a_user = if auth_user.blank?
                   create_auth_user(data)
                 else
                   auth_user
                 end
        a_user.provider_tokens.create(
          provider: data[:provider],
          user_id: data[:id],
          user_data: data
        )
      else
        nil
      end
    end

    def self.create_auth_user(data)
      email = data[:id] + '@' + data[:provider] + '.com'
      AuthUser.create(email: email, password: SecureRandom.uuid)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
api_user_auth-0.1.9 app/models/api_user_auth/provider_token.rb
api_user_auth-0.1.8 app/models/api_user_auth/provider_token.rb
api_user_auth-0.1.7 app/models/api_user_auth/provider_token.rb