@@ -134,8 +134,7 @@ private function checkToken(): array {
134134 \OC_User::setIncognitoMode (true );
135135
136136 // If already authenticated
137- if ($ this ->session ->exists (self ::DAV_AUTHENTICATED )
138- && $ this ->session ->get (self ::DAV_AUTHENTICATED ) === $ share ->getId ()) {
137+ if ($ this ->isShareInSession ($ share )) {
139138 return [true , $ this ->principalPrefix . $ token ];
140139 }
141140
@@ -177,11 +176,11 @@ protected function validateUserPass($username, $password) {
177176 if ($ share ->getShareType () === IShare::TYPE_LINK
178177 || $ share ->getShareType () === IShare::TYPE_EMAIL
179178 || $ share ->getShareType () === IShare::TYPE_CIRCLE ) {
179+ // Validate password if provided
180180 if ($ this ->shareManager ->checkPassword ($ share , $ password )) {
181181 // If not set, set authenticated session cookie
182- if (!$ this ->session ->exists (self ::DAV_AUTHENTICATED )
183- || $ this ->session ->get (self ::DAV_AUTHENTICATED ) !== $ share ->getId ()) {
184- $ this ->session ->set (self ::DAV_AUTHENTICATED , $ share ->getId ());
182+ if (!$ this ->isShareInSession ($ share )) {
183+ $ this ->addShareToSession ($ share );
185184 }
186185 return true ;
187186 }
@@ -221,4 +220,27 @@ public function getShare(): IShare {
221220
222221 return $ this ->share ;
223222 }
223+
224+ private function addShareToSession (IShare $ share ): void {
225+ $ allowedShareIds = $ this ->session ->get (self ::DAV_AUTHENTICATED ) ?? [];
226+ if (!is_array ($ allowedShareIds )) {
227+ $ allowedShareIds = [];
228+ }
229+
230+ $ allowedShareIds [] = $ share ->getId ();
231+ $ this ->session ->set (self ::DAV_AUTHENTICATED , $ allowedShareIds );
232+ }
233+
234+ private function isShareInSession (IShare $ share ): bool {
235+ if (!$ this ->session ->exists (self ::DAV_AUTHENTICATED )) {
236+ return false ;
237+ }
238+
239+ $ allowedShareIds = $ this ->session ->get (self ::DAV_AUTHENTICATED );
240+ if (!is_array ($ allowedShareIds )) {
241+ return false ;
242+ }
243+
244+ return in_array ($ share ->getId (), $ allowedShareIds );
245+ }
224246}
0 commit comments