|
51 | 51 | use OC_User; |
52 | 52 | use OC_Util; |
53 | 53 | use OCA\DAV\Connector\Sabre\Auth; |
| 54 | +use OCP\AppFramework\Db\TTransactional; |
54 | 55 | use OCP\AppFramework\Utility\ITimeFactory; |
55 | 56 | use OCP\EventDispatcher\IEventDispatcher; |
56 | 57 | use OCP\Files\NotPermittedException; |
57 | 58 | use OCP\IConfig; |
| 59 | +use OCP\IDBConnection; |
58 | 60 | use OCP\IRequest; |
59 | 61 | use OCP\ISession; |
60 | 62 | use OCP\IUser; |
|
91 | 93 | * @package OC\User |
92 | 94 | */ |
93 | 95 | class Session implements IUserSession, Emitter { |
94 | | - /** @var Manager $manager */ |
95 | | - private $manager; |
96 | | - |
97 | | - /** @var ISession $session */ |
98 | | - private $session; |
99 | | - |
100 | | - /** @var ITimeFactory */ |
101 | | - private $timeFactory; |
102 | | - |
103 | | - /** @var IProvider */ |
104 | | - private $tokenProvider; |
105 | | - |
106 | | - /** @var IConfig */ |
107 | | - private $config; |
| 96 | + use TTransactional; |
108 | 97 |
|
109 | 98 | /** @var User $activeUser */ |
110 | 99 | protected $activeUser; |
111 | 100 |
|
112 | | - /** @var ISecureRandom */ |
113 | | - private $random; |
114 | | - |
115 | | - /** @var ILockdownManager */ |
116 | | - private $lockdownManager; |
117 | | - |
118 | | - private LoggerInterface $logger; |
119 | | - /** @var IEventDispatcher */ |
120 | | - private $dispatcher; |
121 | | - |
122 | | - public function __construct(Manager $manager, |
123 | | - ISession $session, |
124 | | - ITimeFactory $timeFactory, |
125 | | - ?IProvider $tokenProvider, |
126 | | - IConfig $config, |
127 | | - ISecureRandom $random, |
128 | | - ILockdownManager $lockdownManager, |
129 | | - LoggerInterface $logger, |
130 | | - IEventDispatcher $dispatcher |
| 101 | + public function __construct( |
| 102 | + private Manager $manager, |
| 103 | + private ISession $session, |
| 104 | + private ITimeFactory $timeFactory, |
| 105 | + private ?IProvider $tokenProvider, |
| 106 | + private IConfig $config, |
| 107 | + private ISecureRandom $random, |
| 108 | + private ILockdownManager $lockdownManager, |
| 109 | + private LoggerInterface $logger, |
| 110 | + private IEventDispatcher $dispatcher |
131 | 111 | ) { |
132 | | - $this->manager = $manager; |
133 | | - $this->session = $session; |
134 | | - $this->timeFactory = $timeFactory; |
135 | | - $this->tokenProvider = $tokenProvider; |
136 | | - $this->config = $config; |
137 | | - $this->random = $random; |
138 | | - $this->lockdownManager = $lockdownManager; |
139 | | - $this->logger = $logger; |
140 | | - $this->dispatcher = $dispatcher; |
141 | 112 | } |
142 | 113 |
|
143 | 114 | /** |
@@ -693,8 +664,10 @@ public function createSessionToken(IRequest $request, $uid, $loginName, $passwor |
693 | 664 | $sessionId = $this->session->getId(); |
694 | 665 | $pwd = $this->getPassword($password); |
695 | 666 | // Make sure the current sessionId has no leftover tokens |
696 | | - $this->tokenProvider->invalidateToken($sessionId); |
697 | | - $this->tokenProvider->generateToken($sessionId, $uid, $loginName, $pwd, $name, IToken::TEMPORARY_TOKEN, $remember); |
| 667 | + $this->atomic(function () use ($sessionId, $uid, $loginName, $pwd, $name, $remember) { |
| 668 | + $this->tokenProvider->invalidateToken($sessionId); |
| 669 | + $this->tokenProvider->generateToken($sessionId, $uid, $loginName, $pwd, $name, IToken::TEMPORARY_TOKEN, $remember); |
| 670 | + }, \OCP\Server::get(IDBConnection::class)); |
698 | 671 | return true; |
699 | 672 | } catch (SessionNotAvailableException $ex) { |
700 | 673 | // This can happen with OCC, where a memory session is used |
|
0 commit comments