joken 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/joken/tokens.rb +26 -9
  3. metadata +9 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 90a75857e487a2908202b9235d000e5db8726214
4
- data.tar.gz: 7c6c80242053e9129ac5e5911a190e3100006b27
3
+ metadata.gz: 645bfc6ac33a613969b0ac610e96c74354902a9c
4
+ data.tar.gz: c2cf7c1049734cdb1fd5fcc89612c88f675ab357
5
5
  SHA512:
6
- metadata.gz: 7011c39f667aff09fe219be451d5bc44eb7a6fdbe9cf80aff3daaa7f0f3ee7741dff6c90b81f9f7e5d35c7c818a8aa8dc792c290fddcf92a630d26db0f62e5f9
7
- data.tar.gz: d08f52cb4451cafb1f91048638acfba82116603586c6095a1375fcabdbac17e2979bd5194483095d3b27796a8f6899f0adb5541eb05955dd3256f411ea84ea16
6
+ metadata.gz: 24a8b80a09f5da7bc03a9fb8503100561e2bcc4e9cab33a2cae804e1e21cae8713e4728ff4a7768687767be62312486aac6a7f13da249d42287c09798ce2db58
7
+ data.tar.gz: 2f3d6e74dbc176b6cdbaaaf2db1a864294d1c264107880d08e88cd5521dbbea261c5b1a0c234d28b52152d76b398bf281ed90e246bfbde77c151a544a69fb69e
@@ -1,32 +1,49 @@
1
1
  require "jwt"
2
+ require "securerandom"
2
3
 
3
4
  module Joken
4
5
  class Tokens
5
6
  MAX_DEVICES = 10
7
+ EXP_DAYS = 14
8
+ TOKEN_SIZE = 15
9
+
6
10
 
7
11
  def new_auth_token
8
12
  token = SecureRandom.urlsafe_base64(15)
9
-
10
- auth_tokens << { token => { created_at: Time.now.to_i } }
11
-
12
- while auth_tokens.size > MAX_DEVICES
13
- exp_sort = auth_tokens.sort_by { |k, v| v["created_at"] }.first
14
- auth_tokens.delete!(exp_sort.first)
13
+
14
+ if self.auth_tokens
15
+ self.auth_tokens[token] = { created_at: Time.now.to_i }
16
+ else
17
+ self.auth_tokens = { token => { created_at: Time.now.to_i } }
15
18
  end
16
19
 
20
+ while self.auth_tokens.size > MAX_DEVICES
21
+ exp_sort = self.auth_tokens.sort_by { |k, v| k["created_at"] }.first
22
+ self.delete_token(exp_sort.first)
23
+ end
24
+
25
+ save
26
+
17
27
  # Should be returned and passed in header as:
18
28
  # 'Authorization: Bearer xxxxxxx.yyyyyyyyy.zzzzzzzzzzz'
19
29
  build_header(token)
20
30
  end
21
31
 
22
32
  def delete_token(token)
23
- auth_tokens.delete!(token)
33
+ self.auth_tokens.delete!(token)
24
34
  end
25
35
 
26
36
  def build_header(token)
27
- payload = [{data: {id: id, auth_token: token}}, {typ: "JWT", alg: "HS256"}]
37
+ payload = {
38
+ data: {
39
+ id: id,
40
+ auth_token: token
41
+ },
42
+ exp: (DateTime.now + EXP_DAYS).to_i
43
+ }
44
+
28
45
  # Could be Rails.application.secrets.secret_key_base....
29
- JWT.encode(payload, ENV["SECRET_KEY"], "HS256")
46
+ JWT.encode(payload, ENV["SECRET_KEY"])
30
47
  end
31
48
  end
32
49
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: joken
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - T. Brandon Ashley
@@ -14,16 +14,22 @@ dependencies:
14
14
  name: jwt
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
17
20
  - - ">="
18
21
  - !ruby/object:Gem::Version
19
- version: '0'
22
+ version: 1.5.4
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.5'
24
30
  - - ">="
25
31
  - !ruby/object:Gem::Version
26
- version: '0'
32
+ version: 1.5.4
27
33
  description: Simple JWT based authentication
28
34
  email: tb@tbash.co
29
35
  executables: []