From fce3d8328e092801440617a9cf11e5f25c0a50ab Mon Sep 17 00:00:00 2001 From: Newb I the Newbd Date: Wed, 8 Aug 2018 03:37:10 +0000 Subject: [PATCH 1/4] Allow capitalized usernames if the regex agrees --- system/src/Grav/Common/User/User.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/system/src/Grav/Common/User/User.php b/system/src/Grav/Common/User/User.php index 512b29203a..27918ee300 100644 --- a/system/src/Grav/Common/User/User.php +++ b/system/src/Grav/Common/User/User.php @@ -33,9 +33,6 @@ public static function load($username) /** @var UniformResourceLocator $locator */ $locator = $grav['locator']; - // force lowercase of username - $username = strtolower($username); - $blueprints = new Blueprints; $blueprint = $blueprints->get('user/account'); @@ -194,7 +191,7 @@ public function save() if (!$file->filename()) { $locator = Grav::instance()['locator']; - $file->filename($locator->findResource('account://') . DS . strtolower($username) . YAML_EXT); + $file->filename($locator->findResource('account://') . DS . $username . YAML_EXT); } // if plain text password, hash it and remove plain text From 90c19b2e827c22f6228276d3235e3e617ff3ed3f Mon Sep 17 00:00:00 2001 From: Newb I the Newbd Date: Wed, 8 Aug 2018 11:12:41 +0000 Subject: [PATCH 2/4] Revert previous commit, add capitalized names to yaml Also adds support for Unicode in the usernames, and patches a nasty bug where the usernames don't get saved lowercase. --- system/src/Grav/Common/User/User.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/system/src/Grav/Common/User/User.php b/system/src/Grav/Common/User/User.php index 27918ee300..fc0d70b5d7 100644 --- a/system/src/Grav/Common/User/User.php +++ b/system/src/Grav/Common/User/User.php @@ -33,6 +33,9 @@ public static function load($username) /** @var UniformResourceLocator $locator */ $locator = $grav['locator']; + // force lowercase of username + $username = mb_strtolower($username); + $blueprints = new Blueprints; $blueprint = $blueprints->get('user/account'); @@ -189,10 +192,8 @@ public function save() if ($file) { $username = $this->get('username'); - if (!$file->filename()) { - $locator = Grav::instance()['locator']; - $file->filename($locator->findResource('account://') . DS . $username . YAML_EXT); - } + $locator = Grav::instance()['locator']; + $file->filename($locator->findResource('account://') . DS . mb_strtolower($username) . YAML_EXT); // if plain text password, hash it and remove plain text if ($this->password) { @@ -200,7 +201,9 @@ public function save() unset($this->password); } - unset($this->username); + if ($username == mb_strtolower($username)) { + unset($this->username); + } $file->save($this->items); $this->set('username', $username); } From 009ddc510bc020be712ba19bca73b3a9039d1a6c Mon Sep 17 00:00:00 2001 From: Newb I the Newbd Date: Wed, 8 Aug 2018 15:23:53 +0000 Subject: [PATCH 3/4] Fix capitalized username session keeping --- system/src/Grav/Common/Utils.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system/src/Grav/Common/Utils.php b/system/src/Grav/Common/Utils.php index 1cf7ac751c..1340602bea 100644 --- a/system/src/Grav/Common/Utils.php +++ b/system/src/Grav/Common/Utils.php @@ -726,7 +726,7 @@ private static function generateNonceString($action, $plusOneTick = false) $username = ''; if (isset(Grav::instance()['user'])) { $user = Grav::instance()['user']; - $username = $user->username; + $username = mb_strtolower($user->username); } $token = session_id(); @@ -744,7 +744,7 @@ private static function generateNonceStringOldStyle($action, $plusOneTick = fals { if (isset(Grav::instance()['user'])) { $user = Grav::instance()['user']; - $username = $user->username; + $username = mb_strtolower($user->username); if (isset($_SERVER['REMOTE_ADDR'])) { $username .= $_SERVER['REMOTE_ADDR']; } From e1a01ae573e747d184d249a6abb9e09805f4fcbd Mon Sep 17 00:00:00 2001 From: Newb I the Newbd Date: Mon, 13 Aug 2018 16:01:28 +0000 Subject: [PATCH 4/4] Fixed minor mistake while resolving a conflict --- system/src/Grav/Common/Utils.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system/src/Grav/Common/Utils.php b/system/src/Grav/Common/Utils.php index 59d93a1925..c7acb480b4 100644 --- a/system/src/Grav/Common/Utils.php +++ b/system/src/Grav/Common/Utils.php @@ -732,8 +732,8 @@ private static function generateNonceString($action, $previousTick = false) $token = session_id(); $i = self::nonceTick(); - if ($plusOneTick) { - $i++; + if ($previousTick) { + $i--; } return ($i . '|' . $action . '|' . $username . '|' . $token . '|' . Grav::instance()['config']->get('security.salt'));