trusona 0.18.2 → 0.19.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2526aea576cf569307a8f46e523be30dbac3b1e42cc3371a3d2f7ed0a1a8083f
4
- data.tar.gz: 728b8b9693c8286a8abe6fae2f21605e0a7f4225251cf51835356c80f1aa894c
3
+ metadata.gz: 86dadc0e339a0f3fab0224c8dcb277b751c7d9a27c08b3aca8cc476609056b3c
4
+ data.tar.gz: cfaf39cfbf6fa7cdde0ccf606bbeb0290d5494257abe38395123a5b0ba213904
5
5
  SHA512:
6
- metadata.gz: 12c5674d5a7d42657f205d9a5662ab79fbe3fee22ba1ab8a3dc537a6014d60708109172add5c72ca06563d12404e5979fd565d9be42c0aa0f6bd73064d8dbab5
7
- data.tar.gz: 403f481b3aa333c7e7e9b72c84ef54e90f58270e1250f875143cd1941b81b0e25c6343f3d7a9bab023e54a11e65dda7b634a7a0d86f1b0301d2b7307c426e111
6
+ metadata.gz: 2fa476090b8cf3241d6967aa0eab6db67d4d5e5d12231718619880896dab55362dbf31b74546e8c2b41bf51a06033e0da9852050dfef9896152bf60d5c2cab2b
7
+ data.tar.gz: d7ed5c8dcb5c67919b5b1565271fe13fdf5c9851e1964fee2bc4b1a1ee5a3480e1563144c6235f2cf84bf32a8994b1c65df6c86805e653870658d6ed6aa00848
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/.travis.yml CHANGED
@@ -6,13 +6,18 @@ rvm:
6
6
  - 2.4.3
7
7
  - 2.5.1
8
8
  before_install:
9
- - openssl aes-256-cbc -K $encrypted_b73e363d372e_key -iv $encrypted_b73e363d372e_iv
10
- -in trusona.key.pem.enc -out trusona.key.pem -d
11
- - gem install bundler -v 1.15.1
9
+ - openssl aes-256-cbc -K $encrypted_b73e363d372e_key -iv $encrypted_b73e363d372e_iv -in trusona.key.pem.enc -out trusona.key.pem -d
10
+ - gem install bundler -v 1.15.1
11
+ before_script:
12
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
13
+ - chmod +x ./cc-test-reporter
14
+ - ./cc-test-reporter before-build
12
15
  script:
13
- - bundle exec rspec spec -f p
14
- - bundle exec rubocop lib/**/*.rb -F
15
- - gem build trusona.gemspec
16
+ - bundle exec rspec spec -f p
17
+ - bundle exec rubocop lib/**/*.rb -F
18
+ - gem build trusona.gemspec
19
+ after_script:
20
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
16
21
  before_deploy:
17
22
  - gem install bundler -v 1.15.1
18
23
  deploy:
data/README.md CHANGED
@@ -5,6 +5,8 @@ Easily interact with the Trusona REST API.
5
5
  ## Current Status
6
6
 
7
7
  [![Build Status](https://travis-ci.com/lighthauz/trusona-server-sdk-ruby.svg?token=2f2CMAnop6pxz1LFFPky&branch=master)](https://travis-ci.com/lighthauz/trusona-server-sdk-ruby)
8
+ [![Maintainability](https://api.codeclimate.com/v1/badges/ec9f4f928125c278fa39/maintainability)](https://codeclimate.com/github/trusona/trusona-server-sdk-ruby/maintainability)
9
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/ec9f4f928125c278fa39/test_coverage)](https://codeclimate.com/github/trusona/trusona-server-sdk-ruby/test_coverage)
8
10
 
9
11
  ## Requirements
10
12
  The Trusona SDK requires Ruby version 2.4.0 or higher.
@@ -16,6 +18,7 @@ The Trusona SDK requires Ruby version 2.4.0 or higher.
16
18
  * [Device and User Bindings](#device-and-user-bindings)
17
19
  * [Trusonafications](#trusonafications)
18
20
  * [Devices](#devices)
21
+ * [Users](#users)
19
22
 
20
23
  ### Installation
21
24
 
@@ -188,6 +191,22 @@ If you want to check whether or not a device has been activated, or when it was
188
191
  end
189
192
  ```
190
193
 
194
+ ### Users
195
+
196
+ #### Creating a User
197
+
198
+ Users are created implicitly the first time you bind a user to a device.
199
+
200
+ #### Deactivating a User
201
+
202
+ You may wish to disable a user from having the ability to authenticate from any of the devices they have registered with. To deactivate a user:
203
+
204
+ ```ruby
205
+ Trusona::User.deactivate(user_identifier: '83452353-4F7B-4CA2-BBCD-57ACE7279EA0')
206
+ ```
207
+
208
+ The deactivated user can be reactivated at a later date by binding them to a new device in Trusona.
209
+
191
210
  ## Development
192
211
 
193
212
  ### Patterns
data/lib/trusona.rb CHANGED
@@ -15,6 +15,7 @@ require 'trusona/user_identifier'
15
15
  require 'trusona/device_user_binding'
16
16
  require 'trusona/identity_document'
17
17
  require 'trusona/device'
18
+ require 'trusona/user'
18
19
 
19
20
  require 'trusona/api/signed_request'
20
21
  require 'trusona/api/verified_response'
@@ -32,6 +33,7 @@ require 'trusona/workers/trusonafication_creator'
32
33
  require 'trusona/workers/trusonafication_finder'
33
34
  require 'trusona/workers/identity_document_finder'
34
35
  require 'trusona/workers/device_finder'
36
+ require 'trusona/workers/user_deactivator'
35
37
 
36
38
  require 'trusona/services/base_service'
37
39
  require 'trusona/services/user_accounts_service'
@@ -43,6 +45,7 @@ require 'trusona/services/user_identifiers_service'
43
45
  require 'trusona/services/device_user_bindings_service'
44
46
  require 'trusona/services/identity_documents_service'
45
47
  require 'trusona/services/devices_service'
48
+ require 'trusona/services/users_service'
46
49
 
47
50
  require 'trusona/mappers/base_mapper'
48
51
  require 'trusona/mappers/tru_code_mapper'
@@ -54,6 +57,7 @@ require 'trusona/mappers/user_identifier_mapper'
54
57
  require 'trusona/mappers/device_user_binding_mapper'
55
58
  require 'trusona/mappers/identity_document_mapper'
56
59
  require 'trusona/mappers/device_mapper'
60
+ require 'trusona/mappers/user_mapper'
57
61
 
58
62
  require 'trusona/resources/validators'
59
63
  require 'trusona/resources/base_resource'
@@ -65,6 +69,7 @@ require 'trusona/resources/device_user_binding'
65
69
  require 'trusona/resources/device_user_binding_activation'
66
70
  require 'trusona/resources/identity_document'
67
71
  require 'trusona/resources/device'
72
+ require 'trusona/resources/user'
68
73
 
69
74
  # Trusona
70
75
  module Trusona
@@ -5,9 +5,11 @@ module Trusona
5
5
  #
6
6
  ## An a wrapper around HTTParty
7
7
  class HTTPClient
8
- POST = 'POST'
9
- GET = 'GET'
10
- PATCH = 'PATCH'
8
+ POST = 'POST'
9
+ GET = 'GET'
10
+ PATCH = 'PATCH'
11
+ DELETE = 'DELETE'
12
+
11
13
  CONTENT_TYPE = 'application/json;charset=utf-8'
12
14
 
13
15
  def initialize(host = nil)
@@ -26,6 +28,10 @@ module Trusona
26
28
  execute(path, params, GET)
27
29
  end
28
30
 
31
+ def delete(path, params = {})
32
+ execute(path, params, DELETE)
33
+ end
34
+
29
35
  private
30
36
 
31
37
  def execute(path, params, method)
@@ -55,6 +61,8 @@ module Trusona
55
61
  def get(_uri, _params); end
56
62
 
57
63
  def patch(_uri, _params); end
64
+
65
+ def delete(_uri, _params); end
58
66
  end
59
67
  end
60
68
  end
@@ -10,12 +10,12 @@ module Trusona
10
10
 
11
11
  def initialize(unverified)
12
12
  @unverified = unverified
13
+ @code = unverified.code
13
14
  @verified = verify
14
- @code = unverified.code
15
15
  end
16
16
 
17
17
  def to_h
18
- JSON.parse(@unverified.body)
18
+ JSON.parse(@unverified.body) rescue {}
19
19
  end
20
20
 
21
21
  def verified?
@@ -73,12 +73,7 @@ module Trusona
73
73
  end
74
74
 
75
75
  def parse_method(method)
76
- case method.to_s
77
- when Net::HTTP::Post.to_s
78
- 'POST'
79
- else
80
- 'GET'
81
- end
76
+ method::METHOD
82
77
  end
83
78
  end
84
79
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Trusona
4
+ module Mappers
5
+ #
6
+ ## Maps User Responses
7
+ class UserMapper < BaseMapper
8
+ def resource
9
+ Trusona::Resources::User
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Trusona
4
+ module Resources
5
+ #
6
+ ## A record representing a user in the Trusona API
7
+ class User < BaseResource
8
+ include Trusona::Helpers::KeyNormalizer
9
+
10
+ attr_reader :id, :user_identifier
11
+
12
+ def initialize(params = {})
13
+ super
14
+ @params = normalize_keys(params)
15
+
16
+ @user_identifier = @params[:user_identifier]
17
+ @id = @user_identifier
18
+ end
19
+ end
20
+ end
21
+ end
@@ -25,7 +25,6 @@ module Trusona
25
25
  end
26
26
 
27
27
  def create(resource)
28
- puts resource.to_json
29
28
  raise Trusona::InvalidResourceError unless resource.valid?
30
29
  handle(@client.post(collection_path, resource.to_json), resource)
31
30
  end
@@ -35,6 +34,11 @@ module Trusona
35
34
  handle(@client.patch(member_path(resource), resource.to_json), resource)
36
35
  end
37
36
 
37
+ def delete(resource)
38
+ raise Trusona::InvalidResourceError unless resource.id
39
+ handle(@client.delete(member_path(resource)), resource)
40
+ end
41
+
38
42
  def collection_path
39
43
  @resource_path
40
44
  end
@@ -13,10 +13,6 @@ module Trusona
13
13
  @mapper = mapper
14
14
  @resource_path = '/api/v2/user_devices'
15
15
  end
16
-
17
- def verify_response(_response)
18
- true
19
- end
20
16
  end
21
17
  end
22
18
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Trusona
4
+ module Services
5
+ ##
6
+ # A service to interact with the User resource in the Trusona REST API
7
+ class UsersService < BaseService
8
+ def initialize(client: Trusona::Api::HTTPClient.new,
9
+ mapper: Trusona::Mappers::UserMapper.new)
10
+ super
11
+ @resource_path = '/api/v2/users'
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Trusona
4
+ #
5
+ ## Makes it easy to interface with the User APIs
6
+ class User
7
+ def self.deactivate(user_identifier: nil)
8
+ Trusona::Workers::UserDeactivator.new.deactivate(user_identifier)
9
+ end
10
+ end
11
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Trusona
4
- VERSION = '0.18.2'
4
+ VERSION = '0.19.0'
5
5
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Trusona
4
+ module Workers
5
+ #
6
+ ## Handles deactivating Users
7
+ class UserDeactivator
8
+ def initialize(service: Trusona::Services::UsersService.new)
9
+ @service = service
10
+ end
11
+
12
+ def deactivate(user_identifier)
13
+ if user_identifier.nil? || user_identifier.empty?
14
+ raise(ArgumentError, "The user's identifier is required")
15
+ end
16
+
17
+ user = Trusona::Resources::User.new(user_identifier: user_identifier)
18
+ @service.delete(user)
19
+ end
20
+ end
21
+ end
22
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trusona
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.2
4
+ version: 0.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Trusona
@@ -35,7 +35,7 @@ cert_chain:
35
35
  vbhUT8kOS+bZTalorEol37DD/P4Bbv0fMpw+ozetR2RmwhwTKPKJ5r0oQP6tiqHn
36
36
  hQ==
37
37
  -----END CERTIFICATE-----
38
- date: 2018-07-06 00:00:00.000000000 Z
38
+ date: 2018-08-02 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: httparty
@@ -267,6 +267,7 @@ files:
267
267
  - lib/trusona/mappers/trusonafication_mapper.rb
268
268
  - lib/trusona/mappers/user_account_mapper.rb
269
269
  - lib/trusona/mappers/user_identifier_mapper.rb
270
+ - lib/trusona/mappers/user_mapper.rb
270
271
  - lib/trusona/resources/base_resource.rb
271
272
  - lib/trusona/resources/device.rb
272
273
  - lib/trusona/resources/device_user_binding.rb
@@ -274,6 +275,7 @@ files:
274
275
  - lib/trusona/resources/identity_document.rb
275
276
  - lib/trusona/resources/tru_code.rb
276
277
  - lib/trusona/resources/trusonafication.rb
278
+ - lib/trusona/resources/user.rb
277
279
  - lib/trusona/resources/user_account.rb
278
280
  - lib/trusona/resources/user_identifier.rb
279
281
  - lib/trusona/resources/validators.rb
@@ -286,9 +288,11 @@ files:
286
288
  - lib/trusona/services/trusonafication_service.rb
287
289
  - lib/trusona/services/user_accounts_service.rb
288
290
  - lib/trusona/services/user_identifiers_service.rb
291
+ - lib/trusona/services/users_service.rb
289
292
  - lib/trusona/tru_code.rb
290
293
  - lib/trusona/tru_code_config.rb
291
294
  - lib/trusona/trusonafication.rb
295
+ - lib/trusona/user.rb
292
296
  - lib/trusona/user_account.rb
293
297
  - lib/trusona/user_identifier.rb
294
298
  - lib/trusona/version.rb
@@ -301,6 +305,7 @@ files:
301
305
  - lib/trusona/workers/trusonafication_creator.rb
302
306
  - lib/trusona/workers/trusonafication_finder.rb
303
307
  - lib/trusona/workers/user_account_finder.rb
308
+ - lib/trusona/workers/user_deactivator.rb
304
309
  - lib/trusona/workers/user_identifier_creator.rb
305
310
  - lib/trusona/workers/user_identifier_finder.rb
306
311
  - release-gem
metadata.gz.sig CHANGED
Binary file