Class: Nuabase::NuaTokenGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/nuabase/nua_token_generator.rb

Defined Under Namespace

Classes: InvalidSecretKeyError

Constant Summary collapse

SIGNING_KEY_PREFIX =
"pk_".freeze
ALGORITHM =
'HS256'.freeze
EXPIRY_SECONDS =
180

Instance Method Summary collapse

Constructor Details

#initialize(signing_key_secret:, user_id:, expiry_seconds: EXPIRY_SECONDS) ⇒ NuaTokenGenerator

Returns a new instance of NuaTokenGenerator.



13
14
15
16
17
# File 'lib/nuabase/nua_token_generator.rb', line 13

def initialize(signing_key_secret:, user_id:, expiry_seconds: EXPIRY_SECONDS)
  @user_id = user_id
  @expiry_seconds = expiry_seconds
  parse_signing_key(signing_key_secret)
end

Instance Method Details

#generateObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/nuabase/nua_token_generator.rb', line 19

def generate
  current_time = Time.now.to_i

  payload = {
    iss: @client_id,
    sub: @user_id,
    kid: @key_id,
    jti: SecureRandom.uuid,
    exp: current_time + @expiry_seconds,
    iat: current_time,
    aud: "https://api.nuabase.com"
  }

  token = JWT.encode(payload, @secret_b64, ALGORITHM)

  {
    access_token: token,
    expires_in: @expiry_seconds,
    expires_at: payload[:exp]
  }
end