Skip to content
This repository was archived by the owner on Nov 25, 2020. It is now read-only.

Commit f6247b5

Browse files
committed
Fix Digest Auth in WebDAV
1 parent 7249d05 commit f6247b5

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

core/src/core/src/pydio/Core/Http/Dav/AuthBackendDigest.php

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,14 @@ public function authenticate(Sabre\DAV\Server $server, $realm)
118118
try{
119119
$loggedUser = AuthService::logUser($this->currentUser, null, true);
120120
}catch (LoginException $l){
121-
throw new Sabre\DAV\Exception\NotAuthenticated();
121+
$this->breakNotAuthenticatedAndRequireLogin($server, $realm, $errmsg);
122122
}
123123
$this->updateCurrentUserRights($loggedUser);
124124
} else {
125-
if ($success === false) {
126-
Logger::warning(__CLASS__, "Login failed", array("user" => $this->currentUser, "error" => "Invalid WebDAV user or password"));
127-
}
128-
throw new Sabre\DAV\Exception\NotAuthenticated($errmsg);
125+
if ($success === false) {
126+
Logger::warning(__CLASS__, "Login failed", array("user" => $this->currentUser, "error" => "Invalid WebDAV user or password"));
127+
}
128+
$this->breakNotAuthenticatedAndRequireLogin($server, $realm, $errmsg);
129129
}
130130

131131
if($this->context->hasRepository()){
@@ -159,6 +159,24 @@ public function authenticate(Sabre\DAV\Server $server, $realm)
159159
return true;
160160
}
161161

162+
/**
163+
* @param Sabre\DAV\Server $server
164+
* @param $errmsg
165+
*/
166+
function breakNotAuthenticatedAndRequireLogin(Sabre\DAV\Server $server, $realm, $errmsg){
167+
$digest = new Sabre\HTTP\DigestAuth();
168+
169+
// Hooking up request and response objects
170+
$digest->setHTTPRequest($server->httpRequest);
171+
$digest->setHTTPResponse($server->httpResponse);
172+
173+
$digest->setRealm($realm);
174+
$digest->init();
175+
$digest->requireLogin();
176+
throw new Sabre\DAV\Exception\NotAuthenticated($errmsg);
177+
178+
}
179+
162180
/**
163181
* @param \Pydio\Core\Model\UserInterface $user
164182
* @return bool

core/src/core/src/pydio/Core/Http/Dav/DAVServer.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public static function handleRoute($baseURI, $davRoute){
101101
}
102102
$server->httpResponse = new DAVResponse();
103103

104-
if((AuthBackendBasic::detectBasicHeader() || ConfService::getGlobalConf("WEBDAV_FORCE_BASIC"))){
104+
if(AuthBackendBasic::detectBasicHeader() || ConfService::getGlobalConf("WEBDAV_FORCE_BASIC")){
105105
$authBackend = new AuthBackendBasic(self::$context);
106106
} else {
107107
$authBackend = new AuthBackendDigest(self::$context);

0 commit comments

Comments
 (0)