Class: Ddr::Auth::GrouperGateway
- Inherits:
-
SimpleDelegator
- Object
- SimpleDelegator
- Ddr::Auth::GrouperGateway
- Defined in:
- lib/ddr/auth/grouper_gateway.rb
Constant Summary collapse
- SUBJECT_ID_RE =
Regexp.new('[^@]+(?=@duke\.edu)')
- DEFAULT_TIMEOUT =
5
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize ⇒ GrouperGateway
constructor
A new instance of GrouperGateway.
-
#repository_group_names ⇒ Object
deprecated
Deprecated.
Use #repository_groups instead.
-
#repository_groups(raw = false) ⇒ Object
List of all grouper groups for the repository.
-
#user_group_names(user) ⇒ Object
deprecated
Deprecated.
Use #user_groups instead.
- #user_groups(user, raw = false) ⇒ Object
Constructor Details
#initialize ⇒ GrouperGateway
Returns a new instance of GrouperGateway.
28 29 30 31 32 33 |
# File 'lib/ddr/auth/grouper_gateway.rb', line 28 def initialize super Grouper::Rest::Client::Resource.new(ENV["GROUPER_URL"], user: ENV["GROUPER_USER"], password: ENV["GROUPER_PASSWORD"], timeout: ENV.fetch("GROUPER_TIMEOUT", DEFAULT_TIMEOUT).to_i) end |
Class Method Details
.const_missing(name) ⇒ Object
11 12 13 14 15 16 17 18 |
# File 'lib/ddr/auth/grouper_gateway.rb', line 11 def self.const_missing(name) if name == :REPOSITORY_GROUP_FILTER warn "[DEPRECATION] The constant `#{name}` is deprecated and will be removed in ddr-models 3.0." \ " Use `Ddr::Auth.repository_group_filter` instead." return Ddr::Auth.repository_group_filter end super end |
.repository_groups(*args) ⇒ Object
20 21 22 |
# File 'lib/ddr/auth/grouper_gateway.rb', line 20 def self.repository_groups(*args) new.repository_groups(*args) end |
.user_groups(*args) ⇒ Object
24 25 26 |
# File 'lib/ddr/auth/grouper_gateway.rb', line 24 def self.user_groups(*args) new.user_groups(*args) end |
Instance Method Details
#repository_group_names ⇒ Object
Deprecated.
Use #repository_groups instead.
49 50 51 52 53 |
# File 'lib/ddr/auth/grouper_gateway.rb', line 49 def repository_group_names warn "[DEPRECATION] `Ddr::Auth::GrouperGateway#repository_group_names` is deprecated." \ " Use `#repository_groups` instead." repository_groups end |
#repository_groups(raw = false) ⇒ Object
List of all grouper groups for the repository
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/ddr/auth/grouper_gateway.rb', line 36 def repository_groups(raw = false) repo_groups = groups(REPOSITORY_GROUP_FILTER) if ok? return repo_groups if raw repo_groups.map do |g| Group.new(g["name"], label: g["displayExtension"]) end else [] end end |
#user_group_names(user) ⇒ Object
Deprecated.
Use #user_groups instead.
85 86 87 88 89 |
# File 'lib/ddr/auth/grouper_gateway.rb', line 85 def user_group_names(user) warn "[DEPRECATION] `Ddr::Auth::GrouperGateway#user_group_names` is deprecated." \ " Use `#user_groups` instead." user_groups(user) end |
#user_groups(user, raw = false) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/ddr/auth/grouper_gateway.rb', line 55 def user_groups(user, raw = false) groups = [] subject_id = user.principal_name.scan(SUBJECT_ID_RE).first return groups unless subject_id begin request_body = { "WsRestGetGroupsRequest" => { "subjectLookups" => [{"subjectIdentifier" => subject_id}] } } # Have to use :call b/c grouper-rest-client :subjects method doesn't support POST response = call("subjects", :post, request_body) if ok? result = response["WsGetGroupsResults"]["results"].first # Have to manually filter results b/c Grouper WS version 1.5 does not support filter parameter if result && result["wsGroups"] groups = result["wsGroups"].select { |g| g["name"] =~ /^#{REPOSITORY_GROUP_FILTER}/ } end end rescue StandardError => e # XXX Should we raise a custom exception? Rails.logger.error e end return groups if raw groups.map do |g| Group.new(g["name"], label: g["displayExtension"]) end end |