Sha256: a8d564d72a3a5c49e7f989693602667f4bf8014d05aba8a4f3b2ba4600febb37

Contents?: true

Size: 741 Bytes

Versions: 2

Compression:

Stored size: 741 Bytes

Contents

# frozen_string_literal: true

class Api::V1::GenerateAccessTokenService
  def initialize(args)
    @resource = args[:resource]
    @refresh_token = args[:refresh_token]
    @device_id = args[:device_id]
  end

  def execute
    {
      access_token: JsonWebToken.encode(payload),
      refresh_token: refresh_token,
      "#{resource.class.name.downcase}": {
        id: resource.id,
        email: resource.email
      }
    }
  end

  private

  attr_reader :resource, :refresh_token, :device_id

  def payload
    {
      id: resource.id,
      email: resource.email,
      resource_type: resource.class.name,
      device_id: device_id,
      exp: (Time.current + Settings.user.authenticate.access_token.exp.hours).to_i
    }
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
n_base_rails-0.1.2 lib/services/api/v1/generate_access_token_service.rb
n_base_rails-0.1.1 lib/services/api/v1/generate_access_token_service.rb