uc3-dmp-rds 0.0.11 → 0.0.12

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: 9758c1818c2bd5f8b44b16bc01bf5a99a98ef04fba84d4e123bc970978e8322c
4
- data.tar.gz: b311b8e02f25fb735831b63758d86e9691c3d2e71595016d43281019a385c26d
3
+ metadata.gz: 702eaad4224de108ac5263d173ffd37b34ca51871cdfc54f0998f06c8782aa5b
4
+ data.tar.gz: 7fe595f87d591809e7b9295e438368e26f0d9fc5f71f7891ef223bc094b02b24
5
5
  SHA512:
6
- metadata.gz: aeb916ba0027daececd547e5a80146eb579f3c6eb8f05d23a395c8cf0b676132b923ef1488e38492c0301b28e374eae7854a347217f09f15be5a367eb7ee883e
7
- data.tar.gz: e90e2d8628a56e911aed3d2b2c182520fc5c7d985b91148c91dab378d07e92f4acd160cb041cada3a6fee792ac4c5d1364a08ee82148917792205f3ad478c6c0
6
+ metadata.gz: 0e79712aed60f791fa03366ad7abe203d9ac3bbba18c1615113c3027619606081b2806f2b3748eadff50dea47487e9257230de8fc743619b1bacaddb1b86ef53
7
+ data.tar.gz: 99014e54e2fb2d97bdbe47950f3f727d75fe9c9d808098fcd1d4c9de830b4a33a8a60e4b7e25c2f9faa3a5657b12d4623bfcd987135f2eb824bb7c9a9dcb83bf
@@ -14,9 +14,37 @@ module Uc3DmpRds
14
14
  MSG_INACTIVE_USER = 'User is inactive'
15
15
 
16
16
  class << self
17
+ # Retrieves the User API token from the headers
18
+ def token_from_headers(headers: {})
19
+ return nil unless headers.is_a?(Hash) && headers.keys.any?
20
+
21
+ authorization = json.select { |k, _v| k.downcase.strip == 'authorization' }
22
+ parts = authorization.split(' ')
23
+ return nil unless parts.first.downcase == 'token' && parts.length == 2
24
+
25
+ parts.last.strip
26
+ end
27
+
28
+ # Look up the user based on the API token. Will fail if Uc3DmpRds::Adapter does not
29
+ # have an established connection!
17
30
  def authenticate(token:)
18
31
  raise AuthenticatorError, MSG_INVALID_TOKEN if token.nil? || token.to_s.strip.empty?
19
32
 
33
+ users = _query_user(token: token)
34
+ raise AuthenticatorError, MSG_INVALID_TOKEN unless users.is_a?(Array) && users.any?
35
+
36
+ user = users.first
37
+ raise AuthenticatorError, MSG_INACTIVE_USER unless user['active']
38
+
39
+ _serialize_user(user: user)
40
+ end
41
+
42
+ private
43
+
44
+ # Query ActiveRecord for the User's record
45
+ def _query_user(token:)
46
+ return nil if token.nil?
47
+
20
48
  sql = <<~SQL.squish
21
49
  SELECT users.firstname, users.surname, users.email, users.active, i.value orcid,
22
50
  orgs.name org_name, ro.name ror_name, ro.ror_id
@@ -32,10 +60,11 @@ module Uc3DmpRds
32
60
  LIMIT 1
33
61
  SQL
34
62
  users = ActiveRecord::Base.simple_execute(sql, token: token.to_s.strip)
35
- raise AuthenticatorError, MSG_INVALID_TOKEN unless users.is_a?(Array) and users.any?
63
+ end
36
64
 
37
- user = users.first
38
- raise AuthenticatorError, MSG_INACTIVE_USER unless user['active']
65
+ # Convert the ActiveRecord query results into a JSON object
66
+ def _serialize_user(user:)
67
+ return {} if user.nil? || user['mbox'].nil?
39
68
 
40
69
  hash = { name: [user['surname'], user['firstname']].join(', '), mbox: user['email'] }
41
70
  hash[:user_id] = { type: 'orcid', identifier: user['orcid'] } unless user['orcid'].nil?
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Uc3DmpRds
4
- VERSION = '0.0.11'
4
+ VERSION = '0.0.12'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uc3-dmp-rds
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Riley