code: def ifind_first_object(self, ObjectClass, **kwargs):
          
          # Call regular find() if USER_IFIND_MODE is nocase_collation
          if self.user_manager.USER_IFIND_MODE=='nocase_collation':
              return self.find_first_object(ObjectClass, **kwargs)
  
          # Convert ...(email=value) to ...(email__iexact=value)
          iexact_kwargs = {}
          for key, value in kwargs.items():
              iexact_kwargs[key+'__iexact'] = value
          # Retrieve first object -- case insensitive
          return ObjectClass.objects(**iexact_kwargs).first()
docs: Retrieve the first object of type ``ObjectClass``,
          matching the specified filters in ``**kwargs`` -- case insensitive.
  
          | If USER_IFIND_MODE is 'nocase_collation' this method maps to find_first_object().
          | If USER_IFIND_MODE is 'ifind' this method performs a case insensitive find.