lib/authpds/acts_as_authentic/institutions_attributes.rb
module Authpds
module ActsAsAuthentic
module InstitutionAttributes
require 'institutions'
def primary_institution
unless user_attributes.blank?
all_institutions[user_attributes[:primary_institution]]
end
end
def primary_institution=(new_primary_institution)
if new_primary_institution.is_a?(Institutions::Institution)
new_primary_institution = new_primary_institution.code
end
if new_primary_institution.present?
self.user_attributes =
{ primary_institution: new_primary_institution.to_sym }
end
end
def institutions
if user_attributes.present?
user_attributes[:institutions].collect do |institution|
all_institutions[institution]
end
end
end
def institutions=(new_institutions)
unless new_institutions.is_a?(Array)
raise ArgumentError.new("Institutions input should be an array.")
end
# Collect the codes as symbols
new_institutions.collect! do |institution|
if institution.is_a?(Institutions::Institution)
institution.code
else
institution.to_sym
end
end
# Whitelist the institutions
new_institutions = new_institutions.select do |institution|
all_institutions[institution].present?
end
# Add them to the user attributes
if new_institutions.present?
self.user_attributes = { institutions: new_institutions }
end
end
def all_institutions
@all_institutions ||= Institutions.institutions
end
private :all_institutions
end
end
end