Class: Audiences::ExternalUser
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Audiences::ExternalUser
- Defined in:
- app/models/audiences/external_user.rb
Instance Method Summary collapse
- #as_json ⇒ Object
- #as_scim ⇒ Object
- #groups_as_scim ⇒ Object
- #missing_group_types(expected_types = Audiences.config.required_group_types) ⇒ Object
- #picture_urls ⇒ Object
- #picture_urls=(urls) ⇒ Object
Instance Method Details
#as_json ⇒ Object
66 67 68 |
# File 'app/models/audiences/external_user.rb', line 66 def as_json(...) as_scim.slice(*Audiences.exposed_user_attributes) end |
#as_scim ⇒ Object
70 71 72 |
# File 'app/models/audiences/external_user.rb', line 70 def as_scim(...) (data || {}).merge(groups_as_scim) end |
#groups_as_scim ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'app/models/audiences/external_user.rb', line 74 def groups_as_scim names = groups.reduce({}) { |nam, group| nam.merge(group.resource_type => group.display_name) } { "groups" => groups.map { |g| { "value" => g.scim_id, "display" => g.display_name } }, "title" => names["Titles"], "urn:ietf:params:scim:schemas:extension:authservice:2.0:User" => { "role" => names["Roles"], "department" => names["Departments"], "territory" => names["Territories"], "territoryAbbr" => territory_abbr(names["Territories"]) }, } end |
#missing_group_types(expected_types = Audiences.config.required_group_types) ⇒ Object
87 88 89 90 91 92 |
# File 'app/models/audiences/external_user.rb', line 87 def missing_group_types(expected_types = Audiences.config.required_group_types) return [] if expected_types.blank? actual_types = groups.map(&:resource_type) expected_types - actual_types end |
#picture_urls ⇒ Object
60 |
# File 'app/models/audiences/external_user.rb', line 60 def picture_urls = [picture_url] |
#picture_urls=(urls) ⇒ Object
62 63 64 |
# File 'app/models/audiences/external_user.rb', line 62 def picture_urls=(urls) self.picture_url = urls&.first end |