jot-helpers 1.0.0.beta4 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fbbe16be31ced7f4112c725850272c26bd91fbba4ba060aefc16d6b7292cc85e
4
- data.tar.gz: c4094b3f477538683ac34be6f428ade5c4c138c290654b8ab9fe3d0814bb8c16
3
+ metadata.gz: a587295210595b3561634de5170dc2dc7ce37a47ea1ce61db7ebcede1a7dbad9
4
+ data.tar.gz: fc9c02f97af24c90ae7150d5f7f1ad945f79a85416220e30d8ec0bb86577529f
5
5
  SHA512:
6
- metadata.gz: 343bb0e4f8a9fa376900f5a684191ff3c8582ca9c7e89edfb1732b16931e147f9fe5df9d105059abaca86c6233d32b14cdec430327610194540291fdd67da9eb
7
- data.tar.gz: c6214640f8e904216dccb1052d14cc558181ddd0cbb7d1515bd5a5e577bb03b1a2cc09f3870574e10491b5bc42102237be65a1daaa660cabf1f88d4b1ff486b7
6
+ metadata.gz: ca5d28c55edc69017aafddb218b5ccea2287b17a37a7739c07db15f60c98e70fa101a58e71df34168baebaf222d81228a4df8f6a6f79617441b2fd0c4e68c719
7
+ data.tar.gz: 2acc4fd85f00662e3cf14c6198ec968d1cfd877d4a16b395edd0d75c6c16e6bbc3f3c66866b7f664ce0ff90d753d4b244a20acec06b13f0ea189d4d4d9b416f9
data/README.md CHANGED
@@ -13,6 +13,12 @@ Jot.configure do |config|
13
13
  end
14
14
  ```
15
15
 
16
+ You may wish to also specify the expiration time for tokens as well. The default is 1 hour, but it can be overridden:
17
+
18
+ ```ruby
19
+ config.expiration_time_in_seconds = 1500 # 25 minutes
20
+ ```
21
+
16
22
  ## Usage
17
23
 
18
24
  Encode a payload:
@@ -27,4 +33,11 @@ Decode a payload:
27
33
  Jot.decode("eyJhbGciOiJIUz...") # => { "user_id" => 1 }
28
34
  ```
29
35
 
36
+ Decode a payload and get the header information too:
37
+
38
+ ```ruby
39
+ Jot.original_decode("eyJhbGciOiJIUz") # => [{ "user_id" => 1 }, { "alg" => "HS256" }]
40
+
41
+ ```
42
+
30
43
  Exceptions raised for invalid / expired tokens will be the same as those raised by the JWT gem.
data/Rakefile CHANGED
@@ -1,4 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "bundler/gem_tasks"
4
- task default: %i[]
4
+ require "rspec/core/rake_task"
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task default: :spec
@@ -1,7 +1,10 @@
1
1
  class Jot
2
2
  class Configuration
3
- attr_accessor :algorithm, :secret
4
-
3
+ attr_accessor :algorithm, :secret, :expiration_time_in_seconds
5
4
 
5
+ # Defaults to 1 hour
6
+ def expiration_time_in_seconds
7
+ @expiration_time_in_seconds || 3600
8
+ end
6
9
  end
7
10
  end
data/lib/jot/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Jot
4
- VERSION = "1.0.0.beta4"
4
+ VERSION = "1.1.0"
5
5
  end
data/lib/jot.rb CHANGED
@@ -16,10 +16,16 @@ class Jot
16
16
  end
17
17
 
18
18
  def self.encode(payload)
19
- JWT.encode(payload, config.secret, config.algorithm)
19
+ exp = payload[:exp] || Time.now + config.expiration_time_in_seconds
20
+ JWT.encode(payload.merge(exp: exp.to_i), config.secret, config.algorithm)
20
21
  end
21
22
 
22
23
  def self.decode(payload, verify: true)
24
+ data, _algorithm = original_decode(payload, verify: verify)
25
+ data
26
+ end
27
+
28
+ def self.original_decode(payload, verify: true)
23
29
  JWT.decode(payload, config.secret, verify, { algorithm: config.algorithm })
24
30
  end
25
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jot-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta4
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Bigg
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-07-04 00:00:00.000000000 Z
11
+ date: 2023-08-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jwt
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: timecop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: Provides helper methods for working with JSON Web Tokens (JWTs)
42
56
  email:
43
57
  - me@ryanbigg.com
@@ -70,9 +84,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
70
84
  version: 2.6.0
71
85
  required_rubygems_version: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - ">"
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
- version: 1.3.1
89
+ version: '0'
76
90
  requirements: []
77
91
  rubygems_version: 3.3.16
78
92
  signing_key: