Class: Audiences::ExternalUser

Inherits:
ApplicationRecord show all
Defined in:
app/models/audiences/external_user.rb

Instance Method Summary collapse

Instance Method Details

#as_jsonObject



66
67
68
# File 'app/models/audiences/external_user.rb', line 66

def as_json(...)
  as_scim.slice(*Audiences.exposed_user_attributes)
end

#as_scimObject



70
71
72
# File 'app/models/audiences/external_user.rb', line 70

def as_scim(...)
  (data || {}).merge(groups_as_scim)
end

#groups_as_scimObject



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_urlsObject



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