code: def _auth(self, user, password):
          
          if self.auth_mode == 'none':
              return {'connected': True, 'isadmin': True}
          elif self.auth_mode == 'and':
              ret1 = True
              for b in self.backends:
                  ret1 = self.backends[b].auth(user, password) and ret1
          elif self.auth_mode == 'or':
              ret1 = False
              for b in self.backends:
                  ret1 = self.backends[b].auth(user, password) or ret1
          elif self.auth_mode == 'custom':
              ret1 = self.auth.auth(user, password)
          else:
              raise Exception()
          if not ret1:
              return {'connected': False, 'isadmin': False}
          else:
              isadmin = self._is_admin(user)
              return {'connected': True, 'isadmin': isadmin}
docs: authenticate a user
          @str user: login of the user
          @str password: password of the user
          @rtype: dict, {'connected': <boolean, True if connection succeded>,
              'isadmin': <True if user is ldapcherry administrator>}