Skip to content

Commit 85ff7e6

Browse files
committed
only save the ticket when the user is using session sso
Signed-off-by: Robin Appelman <robin@icewind.nl>
1 parent 7aed00a commit 85ff7e6

1 file changed

Lines changed: 28 additions & 2 deletions

File tree

apps/files_external/lib/Lib/TicketSaveMiddleware.php

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,48 @@
2424
namespace OCA\Files_External\Lib;
2525

2626
use Icewind\SMB\KerberosTicket;
27+
use OCA\Files_External\Controller\UserGlobalStoragesController;
28+
use OCA\Files_External\Lib\Auth\SMB\KerberosSsoSession;
29+
use OCA\Files_External\Service\UserGlobalStoragesService;
2730
use OCP\AppFramework\Http\Response;
2831
use OCP\AppFramework\Middleware;
2932
use OCP\ISession;
33+
use OCP\IUserSession;
3034

3135
class TicketSaveMiddleware extends Middleware {
3236
private ISession $session;
37+
private IUserSession $userSession;
38+
private UserGlobalStoragesService $storagesService;
3339

34-
public function __construct(ISession $session) {
40+
public function __construct(
41+
ISession $session,
42+
IUserSession $userSession,
43+
UserGlobalStoragesService $storagesService
44+
) {
3545
$this->session = $session;
46+
$this->userSession = $userSession;
47+
$this->storagesService = $storagesService;
3648
}
3749

3850
public function afterController($controller, $methodName, Response $response) {
3951
$ticket = KerberosTicket::fromEnv();
40-
if ($ticket && $ticket->isValid()) {
52+
if ($ticket && $ticket->isValid() && $this->needToSaveTicket()) {
4153
$this->session->set('kerberos_ticket', base64_encode($ticket->save()));
4254
}
4355
return $response;
4456
}
57+
58+
private function needToSaveTicket(): bool {
59+
$user = $this->userSession->getUser();
60+
if (!$user) {
61+
return false;
62+
}
63+
$storages = $this->storagesService->getAllStoragesForUser($user);
64+
foreach ($storages as $storage) {
65+
if ($storage->getAuthMechanism() instanceof KerberosSsoSession) {
66+
return true;
67+
}
68+
}
69+
return false;
70+
}
4571
}

0 commit comments

Comments
 (0)