wm_okta_helper 0.2.2 → 0.2.7

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
  SHA1:
3
- metadata.gz: 07e5c43db022be49db574e0e2675796b4862d31c
4
- data.tar.gz: a8798501b5b694b2c5094e1c4e793a1c39ec26a6
3
+ metadata.gz: b6d055c45a27a8b7131abc256cf626a86e66a670
4
+ data.tar.gz: b48c2fbf0b4bdec9ea86930689ddbe555be21665
5
5
  SHA512:
6
- metadata.gz: 313111f82b27a058c10ce84c10d887f40a3479cf49d9ff042715084c7b530f28db6bb83c4c4acf76c65630eea12e87defab4a165841c22f4fe121f11c8fd4c85
7
- data.tar.gz: db4f1aa9ff8d6c7e0b3c4aa0dc9f4f4f0295499aa71e04f8e67a807c1031347d7edfc5506ab9b618aa41fe24ce721d824a144c192b67f90fed798d8ca5c15661
6
+ metadata.gz: 1e8a99048148d581bda980124f587c61095beeff1529f4ccc610a5abaa4c9ac9b3e11380745a6d9f4bce12c3f051c4f7286d910657be4ed56d7c5183b3df79c0
7
+ data.tar.gz: d21e379d09df50cedec9b350728bc1227a7f25e377d9ae069b9652d4fc7e72d2b0965615e2f0f532779806064bfc58fea81cc131095cfa07782b056e3b046de6
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- wm_okta_helper (0.2.2)
4
+ wm_okta_helper (0.2.7)
5
5
  json-jwt
6
6
  jwt
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activesupport (5.2.1)
11
+ activesupport (5.2.4)
12
12
  concurrent-ruby (~> 1.0, >= 1.0.2)
13
13
  i18n (>= 0.7, < 2)
14
14
  minitest (~> 5.1)
@@ -17,25 +17,25 @@ GEM
17
17
  public_suffix (>= 2.0.2, < 4.0)
18
18
  aes_key_wrap (1.0.1)
19
19
  ast (2.4.0)
20
- bindata (2.4.3)
20
+ bindata (2.4.4)
21
21
  byebug (10.0.2)
22
22
  coderay (1.1.2)
23
- concurrent-ruby (1.0.5)
23
+ concurrent-ruby (1.1.5)
24
24
  crack (0.4.3)
25
25
  safe_yaml (~> 1.0.0)
26
26
  diff-lcs (1.3)
27
27
  docile (1.3.1)
28
28
  hashdiff (0.3.7)
29
- i18n (1.1.0)
29
+ i18n (1.7.0)
30
30
  concurrent-ruby (~> 1.0)
31
31
  json (2.1.0)
32
- json-jwt (1.9.4)
33
- activesupport
32
+ json-jwt (1.11.0)
33
+ activesupport (>= 4.2)
34
34
  aes_key_wrap
35
35
  bindata
36
- jwt (2.1.0)
36
+ jwt (2.2.1)
37
37
  method_source (0.9.0)
38
- minitest (5.11.3)
38
+ minitest (5.13.0)
39
39
  parallel (1.12.1)
40
40
  parser (2.5.1.2)
41
41
  ast (~> 2.4.0)
@@ -79,6 +79,7 @@ GEM
79
79
  simplecov-html (~> 0.10.0)
80
80
  simplecov-html (0.10.2)
81
81
  thread_safe (0.3.6)
82
+ timecop (0.9.1)
82
83
  tzinfo (1.2.5)
83
84
  thread_safe (~> 0.1)
84
85
  unicode-display_width (1.4.0)
@@ -91,15 +92,16 @@ PLATFORMS
91
92
  ruby
92
93
 
93
94
  DEPENDENCIES
94
- bundler (~> 1.16)
95
+ bundler (~> 1.16.6)
95
96
  pry-byebug
96
97
  rake (~> 10.0)
97
98
  rspec (~> 3.0)
98
99
  rspec_junit_formatter
99
100
  rubocop (~> 0.54.0)
100
101
  simplecov
102
+ timecop
101
103
  webmock
102
104
  wm_okta_helper!
103
105
 
104
106
  BUNDLED WITH
105
- 1.16.3
107
+ 1.16.6
@@ -7,8 +7,10 @@ module WmOktaHelper
7
7
  'wm_okta_helper/authenticate_api_request.rb'
8
8
  autoload :CreateSession,
9
9
  'wm_okta_helper/create_session.rb'
10
- autoload :ValidateSession,
11
- 'wm_okta_helper/validate_session.rb'
10
+ autoload :GetUserGroups,
11
+ 'wm_okta_helper/get_user_groups.rb'
12
12
  autoload :PostRequest,
13
13
  'wm_okta_helper/post_request.rb'
14
+ autoload :ValidateSession,
15
+ 'wm_okta_helper/validate_session.rb'
14
16
  end
@@ -76,7 +76,7 @@ module WmOktaHelper
76
76
  @token = parse_token
77
77
  if @token['iss'] != site ||
78
78
  @token['aud'] != client_id ||
79
- Time.strptime(@token['exp'].to_s, '%s') < Time.now.utc
79
+ @token['exp'].to_i < Time.now.utc.to_i
80
80
  return false
81
81
  else
82
82
  return true
@@ -3,25 +3,35 @@
3
3
  module WmOktaHelper
4
4
  class CreateSession
5
5
  def initialize(options)
6
- @username = options[:username]
7
- @password = options[:password]
8
- @okta_org = options[:okta_org]
9
- @okta_domain = options[:okta_domain]
6
+ @options = options
10
7
  end
11
8
 
12
9
  def call
13
- PostRequest.new(
14
- url: url,
15
- request_body: request_body
16
- ).call
10
+ check_options
11
+ raise 'Not authorized' if response['sessionToken'].blank?
12
+ response
17
13
  end
18
14
 
19
15
  attr_accessor :username, :password, :okta_org, :okta_domain
20
16
 
21
17
  private
22
18
 
19
+ def available_options
20
+ %i[username password okta_org okta_domain]
21
+ end
22
+
23
+ def check_options
24
+ missing_options = available_options.select { |o| @options[o].blank? }
25
+ if missing_options.present?
26
+ raise "Missing configuration variable: #{missing_options}"
27
+ end
28
+ available_options.each do |o|
29
+ instance_variable_set("@#{o}", @options[o])
30
+ end
31
+ end
32
+
23
33
  def url
24
- "https://#{okta_org}.#{okta_domain}.com/api/v1/authn"
34
+ "https://#{@okta_org}.#{@okta_domain}.com/api/v1/authn"
25
35
  end
26
36
 
27
37
  def request_body
@@ -34,5 +44,12 @@ module WmOktaHelper
34
44
  }
35
45
  }
36
46
  end
47
+
48
+ def response
49
+ @response ||= PostRequest.new(
50
+ url: url,
51
+ request_body: request_body
52
+ ).call
53
+ end
37
54
  end
38
55
  end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'net/http'
4
+
5
+ module WmOktaHelper
6
+ class GetUserGroups
7
+ def initialize(options)
8
+ @user = options[:user]
9
+ @okta_org = options[:okta_org]
10
+ @okta_domain = options[:okta_domain]
11
+ @api_key = options[:api_key]
12
+ end
13
+
14
+ def call
15
+ okta_groups
16
+ end
17
+
18
+ private
19
+
20
+ def site
21
+ "https://#{@okta_org}.#{@okta_domain}.com"
22
+ end
23
+
24
+ def endpoint
25
+ "api/v1/users/#{@user}/groups"
26
+ end
27
+
28
+ def request_url
29
+ URI("#{site}/#{endpoint}")
30
+ end
31
+
32
+ def okta_groups
33
+ groups = []
34
+ fetch_data.each do |g|
35
+ group_name = g.dig('profile', 'name')
36
+ groups << group_name if group_name.include?('otto_')
37
+ end
38
+ groups
39
+ end
40
+
41
+ def fetch_data
42
+ uri = URI.parse(site)
43
+ req_options = { use_ssl: uri.scheme == 'https' }
44
+
45
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
46
+ http.request(request)
47
+ end
48
+ response.body.present? ? JSON.parse(response.body) : []
49
+ end
50
+
51
+ def request
52
+ @request ||= Net::HTTP::Get.new(request_url)
53
+ @request.content_type = 'application/json'
54
+ @request['Accept'] = 'application/json'
55
+ @request['Authorization'] = "SSWS #{@api_key}"
56
+ @request
57
+ end
58
+ end
59
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module WmOktaHelper
4
- VERSION = '0.2.2'
4
+ VERSION = '0.2.7'
5
5
  end
@@ -36,12 +36,13 @@ Gem::Specification.new do |spec|
36
36
  spec.add_dependency 'json-jwt'
37
37
  spec.add_dependency 'jwt'
38
38
 
39
- spec.add_development_dependency 'bundler', '~> 1.16'
39
+ spec.add_development_dependency 'bundler', '~> 1.16.6'
40
40
  spec.add_development_dependency 'pry-byebug'
41
41
  spec.add_development_dependency 'rake', '~> 10.0'
42
42
  spec.add_development_dependency 'rspec', '~> 3.0'
43
43
  spec.add_development_dependency 'rspec_junit_formatter'
44
44
  spec.add_development_dependency 'rubocop', '~> 0.54.0'
45
45
  spec.add_development_dependency 'simplecov'
46
+ spec.add_development_dependency 'timecop'
46
47
  spec.add_development_dependency 'webmock'
47
48
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wm_okta_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jose C Fernandez
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-09-24 00:00:00.000000000 Z
11
+ date: 2019-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json-jwt
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.16'
47
+ version: 1.16.6
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.16'
54
+ version: 1.16.6
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pry-byebug
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: timecop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: webmock
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -174,6 +188,7 @@ files:
174
188
  - lib/wm_okta_helper.rb
175
189
  - lib/wm_okta_helper/authenticate_api_request.rb
176
190
  - lib/wm_okta_helper/create_session.rb
191
+ - lib/wm_okta_helper/get_user_groups.rb
177
192
  - lib/wm_okta_helper/post_request.rb
178
193
  - lib/wm_okta_helper/validate_session.rb
179
194
  - lib/wm_okta_helper/version.rb
@@ -199,7 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
214
  version: '0'
200
215
  requirements: []
201
216
  rubyforge_project:
202
- rubygems_version: 2.6.14
217
+ rubygems_version: 2.6.14.1
203
218
  signing_key:
204
219
  specification_version: 4
205
220
  summary: Helper library for validating Okta jwt token.