|
19 | 19 | use OC_User; |
20 | 20 | use OC_Util; |
21 | 21 | use OCA\DAV\Connector\Sabre\Auth; |
| 22 | +use OCP\AppFramework\Db\TTransactional; |
22 | 23 | use OCP\AppFramework\Utility\ITimeFactory; |
23 | 24 | use OCP\Authentication\Exceptions\ExpiredTokenException; |
24 | 25 | use OCP\Authentication\Exceptions\InvalidTokenException; |
25 | 26 | use OCP\EventDispatcher\GenericEvent; |
26 | 27 | use OCP\EventDispatcher\IEventDispatcher; |
27 | 28 | use OCP\Files\NotPermittedException; |
28 | 29 | use OCP\IConfig; |
| 30 | +use OCP\IDBConnection; |
29 | 31 | use OCP\IRequest; |
30 | 32 | use OCP\ISession; |
31 | 33 | use OCP\IUser; |
|
62 | 64 | * @package OC\User |
63 | 65 | */ |
64 | 66 | class Session implements IUserSession, Emitter { |
65 | | - /** @var Manager $manager */ |
66 | | - private $manager; |
67 | | - |
68 | | - /** @var ISession $session */ |
69 | | - private $session; |
70 | | - |
71 | | - /** @var ITimeFactory */ |
72 | | - private $timeFactory; |
73 | | - |
74 | | - /** @var IProvider */ |
75 | | - private $tokenProvider; |
76 | | - |
77 | | - /** @var IConfig */ |
78 | | - private $config; |
| 67 | + use TTransactional; |
79 | 68 |
|
80 | 69 | /** @var User $activeUser */ |
81 | 70 | protected $activeUser; |
82 | 71 |
|
83 | | - /** @var ISecureRandom */ |
84 | | - private $random; |
85 | | - |
86 | | - /** @var ILockdownManager */ |
87 | | - private $lockdownManager; |
88 | | - |
89 | | - private LoggerInterface $logger; |
90 | | - /** @var IEventDispatcher */ |
91 | | - private $dispatcher; |
92 | | - |
93 | | - public function __construct(Manager $manager, |
94 | | - ISession $session, |
95 | | - ITimeFactory $timeFactory, |
96 | | - ?IProvider $tokenProvider, |
97 | | - IConfig $config, |
98 | | - ISecureRandom $random, |
99 | | - ILockdownManager $lockdownManager, |
100 | | - LoggerInterface $logger, |
101 | | - IEventDispatcher $dispatcher |
| 72 | + public function __construct( |
| 73 | + private Manager $manager, |
| 74 | + private ISession $session, |
| 75 | + private ITimeFactory $timeFactory, |
| 76 | + private ?IProvider $tokenProvider, |
| 77 | + private IConfig $config, |
| 78 | + private ISecureRandom $random, |
| 79 | + private ILockdownManager $lockdownManager, |
| 80 | + private LoggerInterface $logger, |
| 81 | + private IEventDispatcher $dispatcher, |
102 | 82 | ) { |
103 | | - $this->manager = $manager; |
104 | | - $this->session = $session; |
105 | | - $this->timeFactory = $timeFactory; |
106 | | - $this->tokenProvider = $tokenProvider; |
107 | | - $this->config = $config; |
108 | | - $this->random = $random; |
109 | | - $this->lockdownManager = $lockdownManager; |
110 | | - $this->logger = $logger; |
111 | | - $this->dispatcher = $dispatcher; |
112 | 83 | } |
113 | 84 |
|
114 | 85 | /** |
@@ -674,8 +645,10 @@ public function createSessionToken(IRequest $request, $uid, $loginName, $passwor |
674 | 645 | $sessionId = $this->session->getId(); |
675 | 646 | $pwd = $this->getPassword($password); |
676 | 647 | // Make sure the current sessionId has no leftover tokens |
677 | | - $this->tokenProvider->invalidateToken($sessionId); |
678 | | - $this->tokenProvider->generateToken($sessionId, $uid, $loginName, $pwd, $name, IToken::TEMPORARY_TOKEN, $remember); |
| 648 | + $this->atomic(function () use ($sessionId, $uid, $loginName, $pwd, $name, $remember) { |
| 649 | + $this->tokenProvider->invalidateToken($sessionId); |
| 650 | + $this->tokenProvider->generateToken($sessionId, $uid, $loginName, $pwd, $name, IToken::TEMPORARY_TOKEN, $remember); |
| 651 | + }, \OCP\Server::get(IDBConnection::class)); |
679 | 652 | return true; |
680 | 653 | } catch (SessionNotAvailableException $ex) { |
681 | 654 | // This can happen with OCC, where a memory session is used |
|
0 commit comments