Sha256: 42089edde61b27ec1925f5f60762b20c659b6f1f6005a023f037f510853f391f

Contents?: true

Size: 745 Bytes

Versions: 2

Compression:

Stored size: 745 Bytes

Contents

# frozen_string_literal: true

class Api::Admin::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.admin.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/admin/generate_access_token_service.rb
n_base_rails-0.1.1 lib/services/api/admin/generate_access_token_service.rb