コード例 #1
0
ファイル: Auth.php プロジェクト: leopacheco/zf-rest
 /**
  * Authenticates against the supplied adapter
  *
  * @param string username
  * @param string password in row format
  * @return ZfRest\Auth
  */
 public static function authenticate($username, $password)
 {
     if ('' === trim($username) || '' === trim($password)) {
         throw new Exception('ERR.IDENTITY_AMBIGUOUS', self::FAILURE_IDENTITY_AMBIGUOUS);
     }
     if (filter_var($username, FILTER_VALIDATE_EMAIL)) {
         $usedColumn = 'email';
     } else {
         $usedColumn = 'username';
     }
     if (null === ($user = User::locate($usedColumn, $username))) {
         throw new Exception('ERR.IDENTITY_NOT_FOUND', self::FAILURE_IDENTITY_NOT_FOUND);
     }
     if (!String::verifyPassword($password, $user->password)) {
         throw new Exception('ERR.CREDENTIAL_INVALID', self::FAILURE_CREDENTIAL_INVALID);
     }
     $token = String::password(static::getAccessToken($user));
     $user->token = $token;
     $user->save();
     return ['token_type' => 'bearer', 'access_token' => $token];
 }