trusona 0.18.2 → 0.19.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: 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