|
|
|
|
@ -7,7 +7,6 @@ declare(strict_types=1);
|
|
|
|
|
*/
|
|
|
|
|
namespace OC\Authentication\Token;
|
|
|
|
|
|
|
|
|
|
use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
|
|
|
|
|
use OC\Authentication\Exceptions\InvalidTokenException as OcInvalidTokenException;
|
|
|
|
|
use OC\Authentication\Exceptions\PasswordlessTokenException;
|
|
|
|
|
use OCP\Authentication\Exceptions\ExpiredTokenException;
|
|
|
|
|
@ -15,6 +14,7 @@ use OCP\Authentication\Exceptions\InvalidTokenException;
|
|
|
|
|
use OCP\Authentication\Exceptions\WipeTokenException;
|
|
|
|
|
use OCP\Authentication\Token\IProvider as OCPIProvider;
|
|
|
|
|
use OCP\Authentication\Token\IToken as OCPIToken;
|
|
|
|
|
use OCP\DB\Exception;
|
|
|
|
|
|
|
|
|
|
class Manager implements IProvider, OCPIProvider {
|
|
|
|
|
/** @var PublicKeyTokenProvider */
|
|
|
|
|
@ -60,7 +60,10 @@ class Manager implements IProvider, OCPIProvider {
|
|
|
|
|
$remember,
|
|
|
|
|
$scope,
|
|
|
|
|
);
|
|
|
|
|
} catch (UniqueConstraintViolationException $e) {
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
if ($e->getReason() !== Exception::REASON_UNIQUE_CONSTRAINT_VIOLATION) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
// It's rare, but if two requests of the same session (e.g. env-based SAML)
|
|
|
|
|
// try to create the session token they might end up here at the same time
|
|
|
|
|
// because we use the session ID as token and the db token is created anew
|
|
|
|
|
|