Skip to content

Commit

Permalink
Merge pull request #27876 from nextcloud/bugfix/noid/use-cached-user-…
Browse files Browse the repository at this point in the history
…backend-info-for-password-login
  • Loading branch information
skjnldsv authored Oct 22, 2021
2 parents 7e3b6e7 + 1b8ebf2 commit aef40c7
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions lib/private/User/Manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,13 @@ public function checkPasswordNoLogging($loginName, $password) {
$loginName = str_replace("\0", '', $loginName);
$password = str_replace("\0", '', $password);

foreach ($this->backends as $backend) {
$cachedBackend = $this->cache->get($loginName);
if ($cachedBackend !== null && isset($this->backends[$cachedBackend])) {
$backends = [$this->backends[$cachedBackend]];
} else {
$backends = $this->backends;
}
foreach ($backends as $backend) {
if ($backend->implementsActions(Backend::CHECK_PASSWORD)) {
$uid = $backend->checkPassword($loginName, $password);
if ($uid !== false) {
Expand All @@ -257,10 +263,10 @@ public function checkPasswordNoLogging($loginName, $password) {

// since http basic auth doesn't provide a standard way of handling non ascii password we allow password to be urlencoded
// we only do this decoding after using the plain password fails to maintain compatibility with any password that happens
// to contains urlencoded patterns by "accident".
// to contain urlencoded patterns by "accident".
$password = urldecode($password);

foreach ($this->backends as $backend) {
foreach ($backends as $backend) {
if ($backend->implementsActions(Backend::CHECK_PASSWORD)) {
$uid = $backend->checkPassword($loginName, $password);
if ($uid !== false) {
Expand Down

0 comments on commit aef40c7

Please sign in to comment.