Class: Joken::Tokens

Inherits:
Object
  • Object
show all
Defined in:
lib/joken/tokens.rb

Constant Summary collapse

MAX_DEVICES =
10
EXP_DAYS =
14
TOKEN_SIZE =
15

Instance Method Summary collapse

Instance Method Details

#build_header(token) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/joken/tokens.rb', line 36

def build_header(token)
  payload = {
    data: {
      id: id, 
      auth_token: token
    },
    exp: (DateTime.now + EXP_DAYS).to_i
  }
  
  # Could be Rails.application.secrets.secret_key_base....
  JWT.encode(payload, ENV["SECRET_KEY"])
end

#delete_token(token) ⇒ Object



32
33
34
# File 'lib/joken/tokens.rb', line 32

def delete_token(token)
  self.auth_tokens.delete!(token)
end

#new_auth_tokenObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/joken/tokens.rb', line 11

def new_auth_token
  token = SecureRandom.urlsafe_base64(15)
  
  if self.auth_tokens
    self.auth_tokens[token] = { created_at: Time.now.to_i }
  else
    self.auth_tokens = { token => { created_at: Time.now.to_i } }
  end

  while self.auth_tokens.size > MAX_DEVICES
    exp_sort = self.auth_tokens.sort_by { |k, v| k["created_at"] }.first
    self.delete_token(exp_sort.first)
  end
  
  save
  
  # Should be returned and passed in header as:
  # 'Authorization: Bearer xxxxxxx.yyyyyyyyy.zzzzzzzzzzz'
  build_header(token)
end