/**
  * Get a user.
  *
  * @param string|int $what An identifier for the user; either an ID, username or email.
  * @return UserInterface|boolean The user found, or boolean false if no such user.
  */
 protected function getUserByAnything($what)
 {
     $userProvider = $this->gatekeeper->getUserProvider();
     // First, check if we have been given an ID.
     if (is_numeric($what)) {
         $user = $userProvider->getById((int) $what);
         if ($user !== false) {
             return $user;
         }
     }
     // Check if we have an email and use that.
     if (filter_var($what, FILTER_VALIDATE_EMAIL) !== false) {
         $user = $userProvider->getByEmail($what);
         if ($user !== false) {
             return $user;
         }
     }
     // Should be a username now.
     return $userProvider->getByUsername($what);
 }
 /**
  *
  */
 public function testGetUserProvider()
 {
     $gatekeeper = new Gatekeeper($this->getRequest(), $this->getResponse(), $this->getSession(), $this->getUserProvider(), $this->getGroupProvider());
     $this->assertInstanceOf('mako\\auth\\providers\\UserProvider', $gatekeeper->getUserProvider());
 }