jwt_extended 0.1.0 → 0.1.6

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/jwt_base.rb +16 -21
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d8653dae8dd88f4218aa3bba25281cbc90658c9e67343326d369de93d047b947
4
- data.tar.gz: e6307b74238996dea7f1ad0c31644f1d19501a0a02f2bc1d0e209ee4ef0a179d
3
+ metadata.gz: 6e9a7e051e97ccf13f44689822a3f6b2298d8bf7cb3244032b27aebc75816859
4
+ data.tar.gz: 79495af695f50f3199cbcaf41d36819b73f184a4118a2ab9c45ecd2edd6a94d5
5
5
  SHA512:
6
- metadata.gz: a3d26a82e2b7c936b55971330e087448efab14b0149b84213245b85f5394a2d12c5227206736d510fae6ab2aaf0b2c1e5592624f4fb330a3dd7a44be0e842fbd
7
- data.tar.gz: 329a63df2e3728d2eec8e083599a90a76010eec029954bd2a765fc1932fab11f5d354026f9115cf7c2dda260c701caa698c1066b801eb6e21c3619de4884a562
6
+ metadata.gz: 7f7f9d5d173eba4e5801069b55f566e040998d2a8f3e369ef4fc660a73f76f006087d49263a59e297917d3a2b10969dd7cfef953e17f8a9b29b15dc25190c01e
7
+ data.tar.gz: 3e7a04aa68e3fa32045c8568b8ec5b924e31115ec4543937ef22ef8cce14dc7419fe4a0300f077cf46cb92a6ad2c3134cdc3d367b0485b0dad626774ee4ff065
@@ -4,60 +4,55 @@ require 'action_controller/api'
4
4
 
5
5
 
6
6
  class JWTBase < ActionController::API
7
- attr_reader :payload
8
7
 
9
- def initialize(secret_key, access_exp, refresh_exp)
8
+ def initialize(secret_key, access_exp, refresh_exp, algorithm = 'HS256')
10
9
  @secret_key = secret_key
11
10
  @access_exp = access_exp
12
11
  @refresh_exp = refresh_exp
13
- @algorithm = 'HS256'
12
+ @algorithm = algorithm
14
13
 
15
14
  raise Time::TypeError unless @access_exp.class == ActiveSupport::Duration
16
15
  raise Time::TypeError unless @refresh_exp.class == ActiveSupport::Duration
17
16
  end
18
17
 
19
- def create_access_token(payload)
18
+ def create_access_token(payload, header = { typ: :JWT })
20
19
  raise JWT::EncodeError unless payload[:exp].nil? || payload[:type].nil?
21
20
 
22
21
  payload[:exp] = (Time.now + @access_exp).to_i
23
- payload[:type] = :access_token
24
- JWT.encode(payload, @secret_key, @algorithm)
22
+ payload[:type] = :access
23
+ JWT.encode(payload, @secret_key, @algorithm, header)
25
24
  end
26
25
 
27
- def create_refresh_token(payload)
26
+ def create_refresh_token(payload, header = { typ: :JWT })
28
27
  raise JWT::EncodeError unless payload[:exp].nil? || payload[:type].nil?
29
28
 
30
29
  payload[:exp] = (Time.now + @refresh_exp).to_i
31
- payload[:type] = :refresh_token
32
- JWT.encode(payload, @secret_key, @algorithm)
30
+ payload[:type] = :refresh
31
+ JWT.encode(payload, @secret_key, @algorithm, header)
33
32
  end
34
33
 
35
34
  def token_required(token)
36
- return { error: :unauthorized } unless token[0] == 'Bearer'
37
-
38
- payload = JWT.decode(token[1], @secret_key, @algorithm)[0]
39
- rescue JWT::DecodeError || NoMethodError
35
+ payload = JWT.decode(token, @secret_key, @algorithm)[0]
36
+ rescue JWT::DecodeError || NoMethodError || JWT::ExpiredSignature
40
37
  { error: :unauthorized }
41
- rescue JWT::ExpiredSignature
42
- { error: :gone }
43
38
  else
44
39
  payload
45
40
  end
46
41
 
47
42
  def jwt_required(token)
48
43
  payload = token_required(token)
49
- return render status: payload[:error] if payload[:error]
50
- return render status: :forbidden unless payload['type'] == 'access_token'
44
+ return { status: payload[:error] } if payload[:error]
45
+ return { status: :forbidden } unless payload['type'] == 'access'
51
46
 
52
- @payload
47
+ payload
53
48
  end
54
49
 
55
50
  def refresh_token_required(token)
56
51
  payload = token_required(token)
57
- return render status: payload[:error] if payload[:error]
58
- return render status: :forbidden unless payload['type'] == 'refresh_token'
52
+ return { status: payload[:error] } if payload[:error]
53
+ return { status: :forbidden } unless payload['type'] == 'refresh'
59
54
 
60
- @payload
55
+ payload
61
56
  end
62
57
  end
63
58
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jwt_extended
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - JeongWooYeong
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-29 00:00:00.000000000 Z
11
+ date: 2020-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jwt