Class: Audiences::ExternalUser

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

Constant Summary collapse

TERRITORY_ABBRS =
{
  "Philadelphia" => "PHL",
  "New Jersey" => "NJ",
  "Maryland" => "MD",
  "Connecticut" => "CT",
  "Long Island" => "LI",
  "Boston" => "BOS",
  "Atlanta" => "ATL",
  "Chicago" => "CHI",
  "Detroit" => "DET",
  "Houston" => "HOU",
  "Dallas" => "DAL",
  "Denver" => "DEN",
  "Tampa" => "TPA",
  "Austin" => "AUS",
  "Charlotte" => "CLT",
  "Nashville" => "NSH",
  "Phoenix" => "PHX",
  "Pittsburgh" => "PIT",
  "San Antonio" => "SAO",
  "Fort Lauderdale" => "FLL",
  "Las Vegas" => "LVS",
  "Orlando" => "ORL",
  "Cincinnati" => "CIN",
  "Columbus" => "CLB",
  "Jacksonville" => "JAX",
}.freeze

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_ABBRS[names["Territories"]]
    },
  }
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