Module: Eluvia::Jwt

Defined in:
lib/eluvia/utils/jwt.rb

Class Method Summary collapse

Class Method Details

.decode_jwt_token(token) ⇒ Object



26
27
28
29
# File 'lib/eluvia/utils/jwt.rb', line 26

def self.decode_jwt_token(token)
  decoded = JWT.decode(token, get_secret_key)[0]
  HashWithIndifferentAccess.new(decoded)
end

.encode_jwt_token(payload, exp = 1.hours.from_now) ⇒ Object



17
18
19
20
21
22
23
24
# File 'lib/eluvia/utils/jwt.rb', line 17

def self.encode_jwt_token(payload, exp = 1.hours.from_now)
  payload[:exp] = exp.to_i
  if Eluvia::Base::Config.secure_jwt
    payload[:iat] = Time.now.to_i
    payload[:jti] = SecureRandom.uuid
  end
  JWT.encode(payload, get_secret_key)
end

.encode_private_jwt_token(exp = 1.hours.from_now) ⇒ Object



7
8
9
10
# File 'lib/eluvia/utils/jwt.rb', line 7

def self.encode_private_jwt_token(exp = 1.hours.from_now)
  payload = { token_type: 'private_token' }
  encode_jwt_token(payload, exp)
end

.encode_public_jwt_token(user, exp = 1.hours.from_now) ⇒ Object



12
13
14
15
# File 'lib/eluvia/utils/jwt.rb', line 12

def self.encode_public_jwt_token(user, exp = 1.hours.from_now)
  payload = { token_type: 'access', user: JSON.parse(user.to_json) }
  encode_jwt_token(payload, exp)
end

.get_secret_keyObject



31
32
33
# File 'lib/eluvia/utils/jwt.rb', line 31

def self.get_secret_key
  Eluvia::Base::Config.private_api_key.to_s
end