From ab17e6af5d9ab03649a925c82dee2115b40b04ae Mon Sep 17 00:00:00 2001 From: Alex Cabal Date: Mon, 2 Dec 2024 10:20:36 -0600 Subject: [PATCH] Allow getting users by name --- config/apache/rewrites/users.conf | 2 +- lib/User.php | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/config/apache/rewrites/users.conf b/config/apache/rewrites/users.conf index 21f53d57..5a315f52 100644 --- a/config/apache/rewrites/users.conf +++ b/config/apache/rewrites/users.conf @@ -1,6 +1,6 @@ RewriteCond expr "tolower(%{REQUEST_METHOD}) =~ /^post$/" RewriteRule ^/users/([\d]+)$ /users/post.php?user-id=$1 [L] -RewriteRule ^/users/([^/]+)$ /users/get.php?user-identifier=$1 [L] +RewriteRule ^/users/([^/]+)$ /users/get.php?user-identifier=$1 [B,L] RewriteRule ^/users/([\d]+)/edit$ /users/edit.php?user-id=$1 [L] diff --git a/lib/User.php b/lib/User.php index 684a175d..456da5f5 100644 --- a/lib/User.php +++ b/lib/User.php @@ -278,7 +278,7 @@ class User{ } /** - * Get a `User` based on either a `UserId`, `Email`, or `Uuid`. + * Get a `User` based on either a `UserId`, `Email`, or `Uuid`, or `Name`. * * @throws Exceptions\UserNotFoundException */ @@ -293,11 +293,11 @@ class User{ elseif(mb_stripos($identifier, '@') !== false){ return User::GetByEmail($identifier); } - elseif(mb_stripos($identifier, '-') !== false){ + elseif(preg_match('/^[0-9a-f]{8}\-[0-9a-f]{4}\-[0-9a-f]{4}\-[0-9a-f]{4}\-[0-9a-f]{12}$/', $identifier)){ return User::GetByUuid($identifier); } else{ - throw new Exceptions\UserNotFoundException(); + return User::GetByName($identifier); } } @@ -316,6 +316,21 @@ class User{ ', [$email], User::class)[0] ?? throw new Exceptions\UserNotFoundException(); } + /** + * @throws Exceptions\UserNotFoundException + */ + public static function GetByName(?string $name): User{ + if($name === null){ + throw new Exceptions\UserNotFoundException(); + } + + return Db::Query(' + SELECT * + from Users + where Name = ? + ', [$name], User::class)[0] ?? throw new Exceptions\UserNotFoundException(); + } + /** * @throws Exceptions\UserNotFoundException */