app/models/user/with_registration_context.rb
module User::WithRegistrationContext extend ActiveSupport::Concern included do attr_accessor :registration_context validate :extranet_access, on: :create, if: -> { registration_context.is_a?(Communication::Extranet) } after_create :send_notification_to_admins, unless: -> { registration_context.is_a?(Communication::Extranet) } private Method `extranet_access` has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring. def extranet_access unless user_can_access_registration_context? extranet_l10n = registration_context.original_localization if extranet_l10n.registration_contact.present? errors.add :email, I18n.t('extranet.errors.email_not_allowed_with_contact', contact: extranet_l10n.registration_contact) else errors.add :email, I18n.t('extranet.errors.email_not_allowed') end end end def user_can_access_registration_context? user_is_alumni? || user_is_contact? end def user_is_alumni? registration_context.has_feature?(:alumni) && registration_context.alumni.where(email: email).any? end def user_is_contact? registration_context.has_feature?(:contacts) && registration_context.connected_people.where(email: email).any? end def send_notification_to_admins return if server_admin? # ignore server admins to prevent spam during account replication wetween universities NotificationMailer.new_registration(university, self).deliver_later end endend