joken 0.0.0 → 0.0.1

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 (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -0
  3. data/lib/joken/tokens.rb +32 -0
  4. data/lib/joken.rb +3 -4
  5. metadata +18 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ab85fb72308d44fa3cfb6b74d75414da93143aa2
4
- data.tar.gz: 22dc95342124999809b0986afa9df7d158785865
3
+ metadata.gz: 90a75857e487a2908202b9235d000e5db8726214
4
+ data.tar.gz: 7c6c80242053e9129ac5e5911a190e3100006b27
5
5
  SHA512:
6
- metadata.gz: 2688c9a45b3fa85da77229dd3694fbaa3dbc5312cf19f11c2e7e7f6f7467ed55ae0e8990f1063b4b9e7623a0f11cdcc0f13be62c4a55b34635269f1c9de5fd03
7
- data.tar.gz: 655bb0c7aed9ff3665da7541114058753ef3e48fcdb6b89e6d5fbe82dc00bccefd310ca67561f8e0e38d79ec4bb38bb82916ced2daaa010c67948c569d838811
6
+ metadata.gz: 7011c39f667aff09fe219be451d5bc44eb7a6fdbe9cf80aff3daaa7f0f3ee7741dff6c90b81f9f7e5d35c7c818a8aa8dc792c290fddcf92a630d26db0f62e5f9
7
+ data.tar.gz: d08f52cb4451cafb1f91048638acfba82116603586c6095a1375fcabdbac17e2979bd5194483095d3b27796a8f6899f0adb5541eb05955dd3256f411ea84ea16
data/README.md ADDED
@@ -0,0 +1,6 @@
1
+ # joken - oversimplifying the auth process?
2
+
3
+ Just an idea, probably not enough to work
4
+ One big Joken
5
+ Jokens on me
6
+ ok I'm done
@@ -0,0 +1,32 @@
1
+ require "jwt"
2
+
3
+ module Joken
4
+ class Tokens
5
+ MAX_DEVICES = 10
6
+
7
+ def new_auth_token
8
+ 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)
15
+ end
16
+
17
+ # Should be returned and passed in header as:
18
+ # 'Authorization: Bearer xxxxxxx.yyyyyyyyy.zzzzzzzzzzz'
19
+ build_header(token)
20
+ end
21
+
22
+ def delete_token(token)
23
+ auth_tokens.delete!(token)
24
+ end
25
+
26
+ def build_header(token)
27
+ payload = [{data: {id: id, auth_token: token}}, {typ: "JWT", alg: "HS256"}]
28
+ # Could be Rails.application.secrets.secret_key_base....
29
+ JWT.encode(payload, ENV["SECRET_KEY"], "HS256")
30
+ end
31
+ end
32
+ end
data/lib/joken.rb CHANGED
@@ -1,5 +1,4 @@
1
- class Joken
2
- def self.simple?
3
- p "true"
4
- end
1
+ require "joken/tokens"
2
+
3
+ module Joken
5
4
  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.0
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - T. Brandon Ashley
@@ -9,14 +9,30 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2016-06-07 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: jwt
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  description: Simple JWT based authentication
14
28
  email: tb@tbash.co
15
29
  executables: []
16
30
  extensions: []
17
31
  extra_rdoc_files: []
18
32
  files:
33
+ - README.md
19
34
  - lib/joken.rb
35
+ - lib/joken/tokens.rb
20
36
  homepage: http://rubygems.org/gems/joken
21
37
  licenses:
22
38
  - MIT