diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2016-02-17 14:49:04 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2016-02-17 14:49:04 +0100 |
commit | 7af7d18cfa2f1fab239e9a21e989bd8061cf23bb (patch) | |
tree | f11a35340c168a2a866fcf5c82c9d21d847206aa /lib | |
parent | add696b057fa40696c251d4a52ed9d2a997c7aa0 (diff) | |
parent | b99c6f1f67a207984b8b5355703cabd89d1e7c73 (diff) | |
download | nextcloud-server-7af7d18cfa2f1fab239e9a21e989bd8061cf23bb.tar.gz nextcloud-server-7af7d18cfa2f1fab239e9a21e989bd8061cf23bb.zip |
Merge pull request #16783 from owncloud/handle-redirects-global
Adding global error handler for ajax calls which run into redirection…
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/api.php | 11 | ||||
-rw-r--r-- | lib/private/json.php | 1 |
2 files changed, 10 insertions, 2 deletions
diff --git a/lib/private/api.php b/lib/private/api.php index 452612d4c16..6c6be233c9d 100644 --- a/lib/private/api.php +++ b/lib/private/api.php @@ -377,9 +377,16 @@ class OC_API { * @param string $format the format xml|json */ public static function respond($result, $format='xml') { + $request = \OC::$server->getRequest(); + // Send 401 headers if unauthorised if($result->getStatusCode() === API::RESPOND_UNAUTHORISED) { - header('WWW-Authenticate: Basic realm="Authorisation Required"'); + // If request comes from JS return dummy auth request + if($request->getHeader('X-Requested-With') === 'XMLHttpRequest') { + header('WWW-Authenticate: DummyBasic realm="Authorisation Required"'); + } else { + header('WWW-Authenticate: Basic realm="Authorisation Required"'); + } header('HTTP/1.0 401 Unauthorized'); } @@ -389,7 +396,7 @@ class OC_API { $meta = $result->getMeta(); $data = $result->getData(); - if (self::isV2(\OC::$server->getRequest())) { + if (self::isV2($request)) { $statusCode = self::mapStatusCodes($result->getStatusCode()); if (!is_null($statusCode)) { $meta['statuscode'] = $statusCode; diff --git a/lib/private/json.php b/lib/private/json.php index adee28a1593..74aebd476fb 100644 --- a/lib/private/json.php +++ b/lib/private/json.php @@ -66,6 +66,7 @@ class OC_JSON{ public static function checkLoggedIn() { if( !OC_User::isLoggedIn()) { $l = \OC::$server->getL10N('lib'); + http_response_code(\OCP\AppFramework\Http::STATUS_UNAUTHORIZED); self::error(array( 'data' => array( 'message' => $l->t('Authentication error'), 'error' => 'authentication_error' ))); exit(); } |