Class: Joken::Tokens
- Inherits:
-
Object
- Object
- Joken::Tokens
- 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_token ⇒ Object
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 |