apiphobic-tokens 1.0.1 → 1.2.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: 4030c1789098ddaa92ba453c07fad65e895e9abcebe7c2ef6087c8ec0f7f3f47
4
- data.tar.gz: 72f570aaaf61e7d2f80f272a9988b415bc2b6837f267c0925d21185934d5ab0e
3
+ metadata.gz: cfdcea174929f4bc35d14489cc907975cc52b7bdadde0685d149fe170bcef040
4
+ data.tar.gz: d9ef964a93b454acb6924d778e77c43b3aa863fdb3e4c99dbc634f85262f01a3
5
5
  SHA512:
6
- metadata.gz: 210c77fa2424697f7773975a346e386833598456f17a3583c4939da775ec9468dbf45d5d5b5cef5b702420b7870ee39e961666b6391152ab45e981ac7d414980
7
- data.tar.gz: 9e1551a52affe49184c314a5c5e07bb2a4df22f2063b4bdefe4986b52e28e9ce7abf446177d7a8a4aa60d76e7727041ea37efdd9dcd9bda30d238031e753426e
6
+ metadata.gz: 1d2dfabbb167d21ed16940580db4b6c25ce0d97b96bd80ae9be9dc3b9fd908ac47468f8510ddb6a4784319ebe953164a43088e030a2293e9d71223cdf37472c5
7
+ data.tar.gz: 07b4557ae1ee5fdd39ee0ead41ac95eb63222d2c14a78fd00029308d3e08f5f736a98ed24f10b750169735e1482a6e7582e3712d91014d59e828129c4c8a1fca
checksums.yaml.gz.sig CHANGED
Binary file
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010-2016 The Kompanee, Ltd
1
+ Copyright (c) 2010-2019 The Kompanee, Ltd
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to deal
@@ -10,7 +10,7 @@ class InvalidAttribute < ::Erratum::Errors::InvalidToken
10
10
  :additional_message
11
11
 
12
12
  def title
13
- 'Invalid Issuance'
13
+ 'Invalid Attribute'
14
14
  end
15
15
 
16
16
  def detail
@@ -39,7 +39,7 @@ module Tokens
39
39
  end
40
40
 
41
41
  def default_audience
42
- @default_audience || 'public'
42
+ @default_audience || 'User'
43
43
  end
44
44
 
45
45
  def default_availability_leeway_in_seconds
@@ -63,7 +63,7 @@ module Tokens
63
63
  end
64
64
 
65
65
  def default_subject
66
- @default_subject || 'User'
66
+ @default_subject || nil
67
67
  end
68
68
 
69
69
  def private_key
@@ -10,7 +10,6 @@ require 'apiphobic/tokens/configurable'
10
10
  require 'apiphobic/tokens/json_web_tokens/null'
11
11
  require 'apiphobic/tokens/role_predicable'
12
12
 
13
- # rubocop:disable Metrics/ClassLength
14
13
  module Apiphobic
15
14
  module Tokens
16
15
  class JsonWebToken
@@ -47,38 +46,36 @@ class JsonWebToken
47
46
  new(data: data, headers: headers)
48
47
  end
49
48
 
50
- # rubocop:disable Metrics/ParameterLists, Metrics/LineLength
51
- def self.build(id: SecureRandom.uuid,
49
+ # rubocop:disable Metrics/ParameterLists
50
+ def self.build(audience_id:,
51
+ id: SecureRandom.uuid,
52
52
  audience: configuration.default_audience,
53
- expiration: Time.now.utc.to_i + (60 * configuration.default_expiration_in_minutes),
53
+ expiration: Time.now.utc.to_i + (60 * configuration.default_expiration_in_minutes), # rubocop:disable Layout/LineLength
54
54
  issuer: configuration.default_issuer,
55
55
  issued_at: Time.now.utc,
56
56
  not_before: Time.now.utc,
57
- owner: nil,
58
57
  roles: configuration.default_roles,
59
58
  subject: configuration.default_subject,
60
- subject_id:,
59
+ subject_id: nil,
61
60
  token_private_key: configuration.private_key)
62
61
 
63
- owner ||= subject_id
64
-
65
62
  new(
66
63
  private_key: token_private_key,
67
64
  data: {
65
+ 'aid' => audience_id,
68
66
  'aud' => audience,
69
67
  'exp' => expiration.to_i,
70
68
  'iat' => issued_at.to_i,
71
69
  'iss' => issuer,
72
70
  'jti' => id,
73
71
  'nbf' => not_before.to_i,
74
- 'own' => owner,
75
72
  'rol' => roles.join(','),
76
73
  'sid' => subject_id,
77
74
  'sub' => subject,
78
75
  },
79
76
  )
80
77
  end
81
- # rubocop:enable Metrics/ParameterLists, Metrics/LineLength
78
+ # rubocop:enable Metrics/ParameterLists
82
79
 
83
80
  def available?
84
81
  not_before <= (Time.now.to_i + configuration.default_availability_leeway_in_seconds)
@@ -116,7 +113,7 @@ class JsonWebToken
116
113
  end
117
114
 
118
115
  def valid_id?
119
- id =~ /[a-f0-9]{8}\-[a-f0-9]{4}\-[a-f0-9]{4}\-[a-f0-9]{4}\-[a-f0-9]{12}/i
116
+ id =~ /[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}/i
120
117
  end
121
118
 
122
119
  def valid_issuer?
@@ -151,6 +148,10 @@ class JsonWebToken
151
148
  data['aud']
152
149
  end
153
150
 
151
+ def audience_id
152
+ data['aid']
153
+ end
154
+
154
155
  def issued_at
155
156
  data['iat']
156
157
  end
@@ -179,10 +180,6 @@ class JsonWebToken
179
180
  Time.at(not_before)
180
181
  end
181
182
 
182
- def owner_id
183
- data['own']
184
- end
185
-
186
183
  def subject_id
187
184
  data['sid']
188
185
  end
@@ -325,4 +322,3 @@ class JsonWebToken
325
322
  end
326
323
  end
327
324
  end
328
- # rubocop:enable Metrics/ClassLength
@@ -15,6 +15,10 @@ class Null < Tokens::Null
15
15
  nil
16
16
  end
17
17
 
18
+ def audience_id
19
+ nil
20
+ end
21
+
18
22
  def issued_at
19
23
  nil
20
24
  end
@@ -35,10 +39,6 @@ class Null < Tokens::Null
35
39
  nil
36
40
  end
37
41
 
38
- def owner_id
39
- nil
40
- end
41
-
42
42
  def subject_id
43
43
  nil
44
44
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'apiphobic/tokens/json_web_token'
4
+
5
+ module Apiphobic
6
+ module Tokens
7
+ module JsonWebTokens
8
+ class Object < JsonWebToken
9
+ def self.build(object:,
10
+ expiration: Time.now.utc.to_i + (60 * 60 * 24 * 7),
11
+ **attrs)
12
+
13
+ super(subject: object.class.name,
14
+ subject_id: object.id,
15
+ expiration: expiration,
16
+ **attrs)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -8,9 +8,10 @@ module JsonWebTokens
8
8
  class PasswordReset < JsonWebToken
9
9
  def self.build(expiration: Time.now.utc.to_i + (30 * 60),
10
10
  roles: %w{password_reset},
11
+ subject: 'Password',
11
12
  **attrs)
12
13
 
13
- super(expiration: expiration, roles: roles, **attrs)
14
+ super(expiration: expiration, roles: roles, subject: subject, **attrs)
14
15
  end
15
16
  end
16
17
  end
@@ -5,7 +5,7 @@ module Tokens
5
5
  module RolePredicable
6
6
  def method_missing(name, *args)
7
7
  if role_predicates.include?(name)
8
- roles.map(&:to_s).include?(name.to_s.gsub(/\?\z/, ''))
8
+ roles.map(&:to_s).include?(name.to_s.delete_suffix('?'))
9
9
  else
10
10
  super
11
11
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Apiphobic
4
4
  module Tokens
5
- VERSION = '1.0.1'
5
+ VERSION = '1.2.0'
6
6
  end
7
7
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apiphobic-tokens
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - thegranddesign
@@ -10,28 +10,34 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDqjCCApKgAwIBAgIBATANBgkqhkiG9w0BAQUFADBNMREwDwYDVQQDDAhydWJ5
14
- Z2VtczEjMCEGCgmSJomT8ixkARkWE2xpdmluZ2hpZ2hvbnRoZWJsb2cxEzARBgoJ
15
- kiaJk/IsZAEZFgNjb20wHhcNMTcwODAyMjI1OTM1WhcNMTgwODAyMjI1OTM1WjBN
16
- MREwDwYDVQQDDAhydWJ5Z2VtczEjMCEGCgmSJomT8ixkARkWE2xpdmluZ2hpZ2hv
17
- bnRoZWJsb2cxEzARBgoJkiaJk/IsZAEZFgNjb20wggEiMA0GCSqGSIb3DQEBAQUA
18
- A4IBDwAwggEKAoIBAQDtLa7+7p49gW15OgOyRZad/F92iZcMdDjZ2kAxZlviXgVe
19
- PCtjfdURobH+YMdt++6eRkE25utIFqHyN51Shxfdc21T3fPQe/ZEoMyiJK4tYzbh
20
- 7VjNJG4ldvKKpS1p7iVz9imnyTxNwb0JaIOsOFCA04T0u6aCQi2acNvAPLviXk0q
21
- xJ/CKjI4QUTZKVrBt8Q1Egrp2yzmEnSNftDuTbBb8m4vDR+w325CwbKCgycHJ1/g
22
- YZ3FO76TzJuRVbsYS/bU5XKHVEpkeFmWBqEXsk4DuUIWLa6WZEJcoZf+YP+1pycG
23
- 7YqSbydpINtEdopD+EEI+g+zNJ4nSI8/eQcQyEjBAgMBAAGjgZQwgZEwCQYDVR0T
24
- BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFDWuVrg4ve0vLu71kqiGdyBnzJGV
25
- MCsGA1UdEQQkMCKBIHJ1YnlnZW1zQGxpdmluZ2hpZ2hvbnRoZWJsb2cuY29tMCsG
26
- A1UdEgQkMCKBIHJ1YnlnZW1zQGxpdmluZ2hpZ2hvbnRoZWJsb2cuY29tMA0GCSqG
27
- SIb3DQEBBQUAA4IBAQDJIpHjbBPGiaY4wOHcXlltQ+BMmhWQNh+1fZtyajQd+7Ay
28
- fv23mO7Mf25Q38gopQlpaODkfxq54Jt8FvQbr5RYRS4j+JEKb75NgrAtehd8USUd
29
- CiJJGH+yvGNWug9IGZCGX91HIbTsLQ5IUUWQasC5jGP8nxXufUr9xgAJZZenewny
30
- B2qKu8q1A/kj6cw62RCY7yBmUXxlcJBj8g+JKYAFbYYKUdQSzf50k9IiWLWunJM+
31
- Y2GAoHKstmfIVhc4XHOPpmTd2o/C29O9oaRgjrkfQEhF/KvJ/PhoV5hvokzsCyI5
32
- iUeXPfvrGD/itYIBCgk+fnzyQQ4QtE5hTQaWQ3o2
13
+ MIIEyjCCAzKgAwIBAgIBATANBgkqhkiG9w0BAQsFADBVMSIwIAYDVQQDDBlsb2Nh
14
+ bGV1bmtub3duODEwX3J1YnlnZW1zMRowGAYKCZImiZPyLGQBGRYKcHJvdG9ubWFp
15
+ bDETMBEGCgmSJomT8ixkARkWA2NvbTAeFw0yMjA3MDkwNTMxMjJaFw0yMzA3MDkw
16
+ NTMxMjJaMFUxIjAgBgNVBAMMGWxvY2FsZXVua25vd244MTBfcnVieWdlbXMxGjAY
17
+ BgoJkiaJk/IsZAEZFgpwcm90b25tYWlsMRMwEQYKCZImiZPyLGQBGRYDY29tMIIB
18
+ ojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0otlhSPyU7jLLW1p786Mo/pV
19
+ 5cJ1Ed8D/bJK78PqGFO2h0ZUefupxT5PRMokLYNNGRPopnAAxZ0zVxJ68aOyYCBW
20
+ Wk3/XFcXCrtk/OcFwLTltgeMjyqCBd/zRRx6CCjY4uOfH0E3n1gQ6Fbmewjg83XJ
21
+ nOs7Gu/hzj5+feEQ1Exmg6z1oCM/8BTIBtK+p++HvcDK3AhJ7x3fc6P9WS+22w6j
22
+ 7jpi3p9YtoAjrXIzw3lsobiX+bEt+N+T47e8gOATVgapuZ/QmJzNU6LWepehs4V1
23
+ 8J+FUaIMV7nAMKmpkbYL51uHEiGV+HDx1HUdOsCFx8zD4h49KRT2t6AcumJ5P1Cj
24
+ c7NX2xl85ShHDNNFkozuC2c5cwj6F20EVaVjGwv2OFq0S2tUw9EJXHTN9RpfRUmn
25
+ IHwS9M4gcJO7IzV39a1YL6+9hrabF4+JTSYDehq8oxTdcOPLYyvH54aJWVqCrnLO
26
+ KNa/p6hMmwxTWNS5Vz0uxuEGyE9E0tHbtjIs2XX5AgMBAAGjgaQwgaEwCQYDVR0T
27
+ BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFAK3RicwO0f6+puFN6lRVMOKMJuu
28
+ MDMGA1UdEQQsMCqBKGxvY2FsZXVua25vd244MTArcnVieWdlbXNAcHJvdG9ubWFp
29
+ bC5jb20wMwYDVR0SBCwwKoEobG9jYWxldW5rbm93bjgxMCtydWJ5Z2Vtc0Bwcm90
30
+ b25tYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAYEAQwV6pOp5gm8141pyXeQFI/5E
31
+ rZYO3MvdyZM8O3HMD51LDS8mtMURceaKZM6WTambe2RVX4A++0qUiEnn9K4Fexm/
32
+ SEGaC/Gp+Fg9D1SKfkdq9bgdIhOEUwiGqjczgzNC806AtWZ+awI940oydFYZlpo0
33
+ jMQihPPJEqF1U6JBDMZYV5tX/dJYSGRl9L3s1k2tjoN98q+beNaZQDn21Amml4eK
34
+ KEkMeTTJ2E4GVzR9eKEETLq2LygdUWWZ5NdWOYTxJMdg1GZp3b6X8hJrwfOiizqt
35
+ /ANlIEh11/pOnWa6WPUVpGIMpYdquvmJXnF2LX6zxkKK1hbrebt+vAEAGczgw1Ri
36
+ rkLM6y+BHQdkOTj3VG4MjIU8D4h1Z73Exzxds/VbVKMEz+8JrFjGJ/tYa0PZ8U5p
37
+ 3yXL4G6eW3rdBW/OiLF7GgG2o26d02OMzf4+ubUVS5LQDOcd4vgNPLWzJSBt1YIh
38
+ TgBsED7Me5YdMVXxtTWYsF1VMzaL9hReD3UXGcxe
33
39
  -----END CERTIFICATE-----
34
- date: 2018-05-03 00:00:00.000000000 Z
40
+ date: 2022-07-09 00:00:00.000000000 Z
35
41
  dependencies:
36
42
  - !ruby/object:Gem::Dependency
37
43
  name: json-jwt
@@ -53,28 +59,28 @@ dependencies:
53
59
  requirements:
54
60
  - - "~>"
55
61
  - !ruby/object:Gem::Version
56
- version: '3.1'
62
+ version: '4.0'
57
63
  type: :runtime
58
64
  prerelease: false
59
65
  version_requirements: !ruby/object:Gem::Requirement
60
66
  requirements:
61
67
  - - "~>"
62
68
  - !ruby/object:Gem::Version
63
- version: '3.1'
69
+ version: '4.0'
64
70
  - !ruby/object:Gem::Dependency
65
71
  name: rspec
66
72
  requirement: !ruby/object:Gem::Requirement
67
73
  requirements:
68
74
  - - "~>"
69
75
  - !ruby/object:Gem::Version
70
- version: '3.7'
76
+ version: '3.11'
71
77
  type: :development
72
78
  prerelease: false
73
79
  version_requirements: !ruby/object:Gem::Requirement
74
80
  requirements:
75
81
  - - "~>"
76
82
  - !ruby/object:Gem::Version
77
- version: '3.7'
83
+ version: '3.11'
78
84
  - !ruby/object:Gem::Dependency
79
85
  name: rspeckled
80
86
  requirement: !ruby/object:Gem::Requirement
@@ -126,15 +132,22 @@ files:
126
132
  - lib/apiphobic/tokens/json_web_token.rb
127
133
  - lib/apiphobic/tokens/json_web_tokens/invalid.rb
128
134
  - lib/apiphobic/tokens/json_web_tokens/null.rb
135
+ - lib/apiphobic/tokens/json_web_tokens/object.rb
129
136
  - lib/apiphobic/tokens/json_web_tokens/password_reset.rb
130
137
  - lib/apiphobic/tokens/null.rb
131
138
  - lib/apiphobic/tokens/role_predicable.rb
132
139
  - lib/apiphobic/tokens/version.rb
133
- homepage: ''
140
+ homepage: https://github.com/thekompanee/apiphobic-tokens
134
141
  licenses:
135
142
  - MIT
136
143
  metadata:
137
144
  allowed_push_host: https://rubygems.org
145
+ bug_tracker_uri: https://github.com/thekompanee/apiphobic-tokens/issues
146
+ changelog_uri: https://github.com/thekompanee/apiphobic-tokens/blob/master/CHANGELOG.md
147
+ documentation_uri: https://github.com/thekompanee/apiphobic-tokens/tree/releases/v1.2.0
148
+ homepage_uri: https://github.com/thekompanee/apiphobic-tokens
149
+ source_code_uri: https://github.com/thekompanee/apiphobic-tokens
150
+ wiki_uri: https://github.com/thekompanee/apiphobic-tokens/wiki
138
151
  post_install_message:
139
152
  rdoc_options: []
140
153
  require_paths:
@@ -150,8 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
163
  - !ruby/object:Gem::Version
151
164
  version: '0'
152
165
  requirements: []
153
- rubyforge_project:
154
- rubygems_version: 2.7.6
166
+ rubygems_version: 3.3.7
155
167
  signing_key:
156
168
  specification_version: 4
157
169
  summary: API Tokens
metadata.gz.sig CHANGED
Binary file