wm_okta_helper 0.2.2 → 0.2.7

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
  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.