From ff09d071cce812772f96cddac9c6d18dddb95e67 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 12 Nov 2021 13:48:43 +0100 Subject: [PATCH 1/3] Fix missing token update when another field (e.g. last checked) changed Signed-off-by: Joas Schilling --- lib/private/Authentication/Token/DefaultTokenProvider.php | 2 ++ lib/private/Authentication/Token/PublicKeyTokenProvider.php | 2 ++ 2 files changed, 4 insertions(+) diff --git a/lib/private/Authentication/Token/DefaultTokenProvider.php b/lib/private/Authentication/Token/DefaultTokenProvider.php index c10d7f17bc2af..99aead033780f 100644 --- a/lib/private/Authentication/Token/DefaultTokenProvider.php +++ b/lib/private/Authentication/Token/DefaultTokenProvider.php @@ -128,6 +128,8 @@ public function updateTokenActivity(IToken $token) { // Update token only once per minute $token->setLastActivity($now); $this->mapper->update($token); + } else if (!empty($token->getUpdatedFields())) { + $this->mapper->update($token); } } diff --git a/lib/private/Authentication/Token/PublicKeyTokenProvider.php b/lib/private/Authentication/Token/PublicKeyTokenProvider.php index b9cfce6c86930..82b750a847566 100644 --- a/lib/private/Authentication/Token/PublicKeyTokenProvider.php +++ b/lib/private/Authentication/Token/PublicKeyTokenProvider.php @@ -223,6 +223,8 @@ public function updateTokenActivity(IToken $token) { if ($token->getLastActivity() < ($now - $activityInterval)) { $token->setLastActivity($now); $this->mapper->updateActivity($token, $now); + } else if (!empty($token->getUpdatedFields())) { + $this->mapper->update($token); } } From 53e041526119a55ce99da79c2401dc75261e6255 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 12 Nov 2021 13:55:33 +0100 Subject: [PATCH 2/3] Also update last_check when activity needs an update Signed-off-by: Joas Schilling --- .../Authentication/Token/PublicKeyTokenProvider.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/private/Authentication/Token/PublicKeyTokenProvider.php b/lib/private/Authentication/Token/PublicKeyTokenProvider.php index 82b750a847566..24319c0a3c4d7 100644 --- a/lib/private/Authentication/Token/PublicKeyTokenProvider.php +++ b/lib/private/Authentication/Token/PublicKeyTokenProvider.php @@ -221,8 +221,13 @@ public function updateTokenActivity(IToken $token) { /** @var PublicKeyToken $token */ $now = $this->time->getTime(); if ($token->getLastActivity() < ($now - $activityInterval)) { + $updateFull = !empty($token->getUpdatedFields()); $token->setLastActivity($now); - $this->mapper->updateActivity($token, $now); + if ($updateFull) { + $this->mapper->update($token); + } else { + $this->mapper->updateActivity($token, $now); + } } else if (!empty($token->getUpdatedFields())) { $this->mapper->update($token); } From 00dc45a60091281b43fe4d5fc766715e2123039b Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 12 Nov 2021 13:58:59 +0100 Subject: [PATCH 3/3] Fix CS Signed-off-by: Joas Schilling --- lib/private/Authentication/Token/DefaultTokenProvider.php | 2 +- lib/private/Authentication/Token/PublicKeyTokenProvider.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/private/Authentication/Token/DefaultTokenProvider.php b/lib/private/Authentication/Token/DefaultTokenProvider.php index 99aead033780f..202b85ee51774 100644 --- a/lib/private/Authentication/Token/DefaultTokenProvider.php +++ b/lib/private/Authentication/Token/DefaultTokenProvider.php @@ -128,7 +128,7 @@ public function updateTokenActivity(IToken $token) { // Update token only once per minute $token->setLastActivity($now); $this->mapper->update($token); - } else if (!empty($token->getUpdatedFields())) { + } elseif (!empty($token->getUpdatedFields())) { $this->mapper->update($token); } } diff --git a/lib/private/Authentication/Token/PublicKeyTokenProvider.php b/lib/private/Authentication/Token/PublicKeyTokenProvider.php index 24319c0a3c4d7..a4b6832b3d320 100644 --- a/lib/private/Authentication/Token/PublicKeyTokenProvider.php +++ b/lib/private/Authentication/Token/PublicKeyTokenProvider.php @@ -228,7 +228,7 @@ public function updateTokenActivity(IToken $token) { } else { $this->mapper->updateActivity($token, $now); } - } else if (!empty($token->getUpdatedFields())) { + } elseif (!empty($token->getUpdatedFields())) { $this->mapper->update($token); } }