Sha256: a2ba0d83d054b198fb816b181474c2a38aeef18ca2de0fca25f3cb3c2ac86936

Contents?: true

Size: 556 Bytes

Versions: 4

Compression:

Stored size: 556 Bytes

Contents

module RailsSso
  class UpdateUser
    def initialize(data, options = {})
      @id, @data = data['id'], data.except('id')
      @fields, @repository = options.values_at(:fields, :repository)
    end

    def call
      if user = repository.find_by_sso_id(id)
        repository.update(user, params)
        user
      else
        repository.create_with_sso_id(id, params)
      end
    end

    private

    attr_reader :id, :data, :repository

    def fields
      @fields.map(&:to_s)
    end

    def params
      data.slice(*fields)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rails_sso-0.1.3 app/services/rails_sso/update_user.rb
rails_sso-0.1.2 app/services/rails_sso/update_user.rb
rails_sso-0.1.1 app/services/rails_sso/update_user.rb
rails_sso-0.1.0 app/services/rails_sso/update_user.rb