Newer
Older
# == Schema Information
#
# Table name: communication_extranets
#
# id :uuid not null, primary key
# about_type :string indexed => [about_id]
# has_sso :boolean default(FALSE)
# host :string
# name :string
# sso_cert :text
# sso_mapping :jsonb
# sso_name_identifier_format :string
# sso_provider :integer default("saml")
# sso_target_url :string
# created_at :datetime not null
# updated_at :datetime not null
# about_id :uuid indexed => [about_type]
# university_id :uuid not null, indexed
# index_communication_extranets_on_university_id (university_id)
#
# Foreign Keys
#
# fk_rails_c2268c7ebd (university_id => universities.id)
#
class Communication::Extranet < ApplicationRecord
Sébastien Gaya
committed
# We don't include Sanitizable because too many complex attributes. We handle it below.
has_one_attached_deletable :favicon do |attachable|
attachable.variant :thumb, resize_to_limit: [228, 228]
end
validates_presence_of :name, :host
validates :logo, size: { less_than: 1.megabytes }
validates :favicon, size: { less_than: 1.megabytes }
Sébastien Gaya
committed
before_validation :sanitize_fields
scope :ordered, -> { order(:name) }
scope :for_search_term, -> (term) {
where("
unaccent(communication_extranets.host) ILIKE unaccent(:term) OR
unaccent(communication_extranets.name) ILIKE unaccent(:term)
", term: "%#{sanitize_sql_like(term)}%")
}
find_by host: host
def cohorts
about&.cohorts
end
def years
about&.academic_years
end
@url ||= Rails.env.development? ? "http://#{host}:3000" : "https://#{host}"
Sébastien Gaya
committed
private
def sanitize_fields
self.color = Osuny::Sanitizer.sanitize(self.color, 'string')
self.cookies_policy = Osuny::Sanitizer.sanitize(self.cookies_policy, 'text')
self.host = Osuny::Sanitizer.sanitize(self.host, 'string')
self.name = Osuny::Sanitizer.sanitize(self.name, 'string')
self.privacy_policy = Osuny::Sanitizer.sanitize(self.privacy_policy, 'text')
self.registration_contact = Osuny::Sanitizer.sanitize(self.registration_contact, 'string')
self.terms = Osuny::Sanitizer.sanitize(self.terms, 'text')
end