summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2016-02-17 14:49:04 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2016-02-17 14:49:04 +0100
commit7af7d18cfa2f1fab239e9a21e989bd8061cf23bb (patch)
treef11a35340c168a2a866fcf5c82c9d21d847206aa /lib
parentadd696b057fa40696c251d4a52ed9d2a997c7aa0 (diff)
parentb99c6f1f67a207984b8b5355703cabd89d1e7c73 (diff)
downloadnextcloud-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.php11
-rw-r--r--lib/private/json.php1
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();
}