jwt_extended 0.0.2 → 0.0.4

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 +58 -40
  3. metadata +33 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d84a1d8235e850420ea074b86ecf3069ef4477f69fca10e73d53f1369da5f9e1
4
- data.tar.gz: a0bfcb2b893510fb106709dae7fc005fbd7330cdc82da90125415ac0480964c1
3
+ metadata.gz: 377ef2309102c8f724790e4bb9421e8520ad3ff1d175cd3b0f725e16c418a646
4
+ data.tar.gz: cc820f3962c887c04960902c5915d98368fa8544d4117e47a02f0ed097c97af0
5
5
  SHA512:
6
- metadata.gz: bb910bb026d8423d262bc22a3f30b8fac15e378581fcb3da24d1e3e38b3c7af0c47124128ceb19f535c58d3fe9e03badc1e9283933f58ead0e60a905d221667b
7
- data.tar.gz: c2fe62fcb25c7a7589bcdb1717c58319688b5203b1bb8cc94ea37a185d1332ddf1272353d6c21f8bf0134f3468aaf7dbf3d9489f19068537d5c5a15c9c9ec35f
6
+ metadata.gz: 9bddc511e4719ce7c5fd8d1353e7bb5754065d6a838ddc57d308eefe69ad21e64b4347873e940cae8f8c746d3cfa4232f642b43dbb888abab268736c3b763c2d
7
+ data.tar.gz: 93a86965979888ade33b964b74e86d3cb2405ab3cc227c6d0e72a3f5a8edf366096905eca9a7be7b48378387e96c3bb790f8e338b9b67590225c79170de61f8f
data/lib/jwt_base.rb CHANGED
@@ -1,44 +1,62 @@
1
1
  require 'jwt'
2
2
  require 'active_support/duration'
3
+ require 'action_controller/api'
3
4
 
4
- module JWTBase
5
- class JWTBase
6
- def initialize(secret_key, access_exp, refresh_exp)
7
- @@secret_key = secret_key
8
- @@access_exp = access_exp
9
- @@refresh_exp = refresh_exp
10
- @@algorithm = 'HS256'
11
-
12
- raise Time::TypeError unless @@access_exp.class == ActiveSupport::Duration
13
- raise Time::TypeError unless @@refresh_exp.class == ActiveSupport::Duration
14
- end
15
-
16
- def create_access_token(payload)
17
- raise JWT::EncodeError unless payload[:exp].nil? || payload[:type].nil?
18
-
19
- payload[:exp] = (Time.now + @@access_exp).to_i
20
- payload[:type] = :access_token
21
- JWT.encode(payload, @@secret_key, @@algorithm)
22
- end
23
-
24
- def create_refresh_token(payload)
25
- raise JWT::EncodeError unless payload[:exp].nil? || payload[:type].nil?
26
-
27
- payload[:exp] = (Time.now + @@refresh_exp).to_i
28
- payload[:type] = :refresh_token
29
- JWT.encode(payload, @@secret_key, @@algorithm)
30
- end
31
-
32
- def get_jwt_payload(token)
33
- token = token.to_s
34
- begin
35
- payload = JWT.decode(token, @@secret_key, @@algorithm)
36
- rescue JWT::ExpiredSignature
37
- return { 'err' => 410 }
38
- rescue JWT::DecodeError
39
- return nil
40
- end
41
- payload[0]
42
- end
5
+
6
+ class JWTBase < ActionController::API
7
+ def initialize(secret_key, access_exp, refresh_exp)
8
+ @@secret_key = secret_key
9
+ @@access_exp = access_exp
10
+ @@refresh_exp = refresh_exp
11
+ @@algorithm = 'HS256'
12
+
13
+ raise Time::TypeError unless @@access_exp.class == ActiveSupport::Duration
14
+ raise Time::TypeError unless @@refresh_exp.class == ActiveSupport::Duration
15
+ end
16
+
17
+ def create_access_token(payload)
18
+ raise JWT::EncodeError unless payload[:exp].nil? || payload[:type].nil?
19
+
20
+ payload[:exp] = (Time.now + @@access_exp).to_i
21
+ payload[:type] = :access_token
22
+ JWT.encode(payload, @@secret_key, @@algorithm)
23
+ end
24
+
25
+ def create_refresh_token(payload)
26
+ raise JWT::EncodeError unless payload[:exp].nil? || payload[:type].nil?
27
+
28
+ payload[:exp] = (Time.now + @@refresh_exp).to_i
29
+ payload[:type] = :refresh_token
30
+ JWT.encode(payload, @@secret_key, @@algorithm)
31
+ end
32
+
33
+ def token_required
34
+ token = request.authorization.split(' ')
35
+ return { error: :unauthorized } unless token[0] == 'Bearer'
36
+
37
+ payload = JWT.decode(token[1], @@secret_key, @@algorithm)[0]
38
+ rescue JWT::DecodeError || NoMethodError
39
+ { error: :unauthorized }
40
+ rescue JWT::ExpiredSignature
41
+ { error: :gone }
42
+ else
43
+ payload
44
+ end
45
+
46
+ def jwt_required
47
+ payload = token_required
48
+ return render status: payload[:error] if payload[:error]
49
+ return render status: :forbidden unless payload['type'] == 'access_token'
50
+
51
+ @payload
43
52
  end
44
- end
53
+
54
+ def refresh_token_required
55
+ payload = token_required
56
+ return render status: payload[:error] if payload[:error]
57
+ return render status: :forbidden unless payload['type'] == 'refresh_token'
58
+
59
+ @payload
60
+ end
61
+ end
62
+
metadata CHANGED
@@ -1,16 +1,44 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jwt_extended
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - JeongWooYeong
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-09 00:00:00.000000000 Z
12
- dependencies: []
13
- description: A simple jwt gem
11
+ date: 2020-04-29 00:00:00.000000000 Z
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: 2.2.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.2.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 6.0.2
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 6.0.2
41
+ description: A simple jwt gem for me
14
42
  email: rubyonrails@kakao.com
15
43
  executables: []
16
44
  extensions: []
@@ -39,5 +67,5 @@ requirements: []
39
67
  rubygems_version: 3.0.3
40
68
  signing_key:
41
69
  specification_version: 4
42
- summary: Hola!
70
+ summary: jwt_extend
43
71
  test_files: []