@@ -118,14 +118,14 @@ public function authenticate(Sabre\DAV\Server $server, $realm)
118
118
try {
119
119
$ loggedUser = AuthService::logUser ($ this ->currentUser , null , true );
120
120
}catch (LoginException $ l ){
121
- throw new Sabre \ DAV \ Exception \ NotAuthenticated ( );
121
+ $ this -> breakNotAuthenticatedAndRequireLogin ( $ server , $ realm , $ errmsg );
122
122
}
123
123
$ this ->updateCurrentUserRights ($ loggedUser );
124
124
} 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 );
129
129
}
130
130
131
131
if ($ this ->context ->hasRepository ()){
@@ -159,6 +159,24 @@ public function authenticate(Sabre\DAV\Server $server, $realm)
159
159
return true ;
160
160
}
161
161
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
+
162
180
/**
163
181
* @param \Pydio\Core\Model\UserInterface $user
164
182
* @return bool
0 commit comments