From 163e54def1fc3452088b13a37c0dfad2c1e3ab0c Mon Sep 17 00:00:00 2001
From: flashwave <me@flash.moe>
Date: Sat, 30 Nov 2024 04:20:20 +0000
Subject: [PATCH] Forgot half of it.

---
 assets/misuzu.js/messages/messages.js  |  2 +-
 public-legacy/auth/login.php           |  4 +--
 public-legacy/auth/password.php        |  4 +--
 public-legacy/auth/register.php        |  4 +--
 public-legacy/comments.php             |  2 +-
 public-legacy/forum/forum.php          |  2 +-
 public-legacy/forum/index.php          |  2 +-
 public-legacy/forum/post.php           |  4 +--
 public-legacy/forum/posting.php        |  2 +-
 public-legacy/forum/topic.php          |  4 +--
 public-legacy/manage/users/ban.php     |  4 +--
 public-legacy/manage/users/note.php    |  2 +-
 public-legacy/manage/users/user.php    | 16 ++++++------
 public-legacy/manage/users/warning.php |  4 +--
 public-legacy/profile.php              |  4 +--
 public-legacy/search.php               |  2 +-
 public-legacy/settings/account.php     |  4 +--
 public-legacy/settings/data.php        |  4 +--
 public-legacy/settings/sessions.php    |  2 +-
 public/index.php                       |  2 +-
 src/AuditLog/AuditLog.php              |  6 ++---
 src/Auth/AuthInfo.php                  |  4 +--
 src/Auth/AuthRpcHandler.php            |  4 +--
 src/Auth/AuthTokenBuilder.php          |  4 +--
 src/Auth/LoginAttempts.php             |  6 ++---
 src/Auth/RecoveryTokens.php            |  4 +--
 src/Auth/Sessions.php                  |  8 +++---
 src/Auth/TwoFactorAuthSessions.php     |  2 +-
 src/Changelog/Changelog.php            |  8 +++---
 src/Comments/Comments.php              | 20 +++++++--------
 src/Comments/CommentsCategoryInfo.php  |  2 +-
 src/Forum/ForumCategories.php          |  6 ++---
 src/Forum/ForumContext.php             |  4 +--
 src/Forum/ForumPosts.php               | 10 ++++----
 src/Forum/ForumTopicRedirects.php      |  6 ++---
 src/Forum/ForumTopics.php              | 16 ++++++------
 src/Hanyuu/HanyuuRpcHandler.php        | 12 ++++-----
 src/Messages/MessagesDatabase.php      | 28 ++++++++++-----------
 src/Messages/MessagesRoutes.php        | 10 ++++----
 src/News/News.php                      |  4 +--
 src/News/NewsRoutes.php                |  2 +-
 src/Perms/Permissions.php              | 16 ++++++------
 src/Profile/ProfileFields.php          |  8 +++---
 src/Satori/SatoriRoutes.php            |  4 +--
 src/SharpChat/SharpChatRoutes.php      |  8 +++---
 src/TemplatingExtension.php            |  2 +-
 src/Users/Assets/UserImageAsset.php    |  2 +-
 src/Users/Bans.php                     | 12 ++++-----
 src/Users/ModNotes.php                 | 12 ++++-----
 src/Users/Roles.php                    |  4 +--
 src/Users/UserInfo.php                 |  4 ---
 src/Users/Users.php                    | 34 +++++++++++++-------------
 src/Users/UsersContext.php             |  8 +++---
 src/Users/UsersRpcHandler.php          |  8 +++---
 src/Users/Warnings.php                 |  8 +++---
 55 files changed, 183 insertions(+), 187 deletions(-)

diff --git a/assets/misuzu.js/messages/messages.js b/assets/misuzu.js/messages/messages.js
index aa4e45a2..c43084a0 100644
--- a/assets/misuzu.js/messages/messages.js
+++ b/assets/misuzu.js/messages/messages.js
@@ -10,7 +10,7 @@
 const MszMessages = () => {
     const extractMsgIds = msg => {
         if(typeof msg.getId === 'function')
-            return msg.getId();
+            return msg.id;
         if(typeof msg.toString === 'function')
             return msg.toString();
         throw 'unsupported message type';
diff --git a/public-legacy/auth/login.php b/public-legacy/auth/login.php
index 6b408e83..87541114 100644
--- a/public-legacy/auth/login.php
+++ b/public-legacy/auth/login.php
@@ -25,9 +25,9 @@ if(!empty($_GET['resolve'])) {
     }
 
     echo json_encode([
-        'id' => (int)$userInfo->getId(),
+        'id' => (int)$userInfo->id,
         'name' => $userInfo->name,
-        'avatar' => $msz->urls->format('user-avatar', ['user' => $userInfo->getId(), 'res' => 200]),
+        'avatar' => $msz->urls->format('user-avatar', ['user' => $userInfo->id, 'res' => 200]),
     ]);
     return;
 }
diff --git a/public-legacy/auth/password.php b/public-legacy/auth/password.php
index 86a49647..6d294b21 100644
--- a/public-legacy/auth/password.php
+++ b/public-legacy/auth/password.php
@@ -45,7 +45,7 @@ while($canResetPassword) {
             unset($tokenInfo);
         }
 
-        if(empty($tokenInfo) || !$tokenInfo->isValid || $tokenInfo->userId !== (string)$userInfo->getId()) {
+        if(empty($tokenInfo) || !$tokenInfo->isValid || $tokenInfo->userId !== (string)$userInfo->id) {
             $notices[] = 'Invalid verification code!';
             break;
         }
@@ -127,7 +127,7 @@ while($canResetPassword) {
             }
         }
 
-        Tools::redirect($msz->urls->format('auth-reset', ['user' => $forgotUser->getId()]));
+        Tools::redirect($msz->urls->format('auth-reset', ['user' => $forgotUser->id]));
         return;
     }
 
diff --git a/public-legacy/auth/register.php b/public-legacy/auth/register.php
index 3d1219a5..5a459b5e 100644
--- a/public-legacy/auth/register.php
+++ b/public-legacy/auth/register.php
@@ -95,10 +95,10 @@ while(!$restricted && !empty($register)) {
     }
 
     $msz->usersCtx->users->addRoles($userInfo, $defaultRoleInfo);
-    $msz->config->setString('users.newest', $userInfo->getId());
+    $msz->config->setString('users.newest', $userInfo->id);
     $msz->perms->precalculatePermissions(
         $msz->forumCtx->categories,
-        [$userInfo->getId()]
+        [$userInfo->id]
     );
 
     Tools::redirect($msz->urls->format('auth-login-welcome', ['username' => $userInfo->name]));
diff --git a/public-legacy/comments.php b/public-legacy/comments.php
index 11eafea7..edf55af2 100644
--- a/public-legacy/comments.php
+++ b/public-legacy/comments.php
@@ -94,7 +94,7 @@ switch($commentMode) {
                 400
             );
 
-        $isOwnComment = $commentInfo->userId === $msz->authInfo->userInfo->getId();
+        $isOwnComment = $commentInfo->userId === $msz->authInfo->userInfo->id;
         $isModAction  = $canDeleteAny && !$isOwnComment;
 
         if(!$isModAction && !$isOwnComment)
diff --git a/public-legacy/forum/forum.php b/public-legacy/forum/forum.php
index 845d3649..76e888dd 100644
--- a/public-legacy/forum/forum.php
+++ b/public-legacy/forum/forum.php
@@ -15,7 +15,7 @@ try {
 $perms = $msz->authInfo->getPerms('forum', $categoryInfo);
 
 $currentUser = $msz->authInfo->userInfo;
-$currentUserId = $currentUser === null ? '0' : $currentUser->getId();
+$currentUserId = $currentUser === null ? '0' : $currentUser->id;
 
 if(!$perms->check(Perm::F_CATEGORY_VIEW))
     Template::throwError(403);
diff --git a/public-legacy/forum/index.php b/public-legacy/forum/index.php
index ef29a3a0..2ce2f5ed 100644
--- a/public-legacy/forum/index.php
+++ b/public-legacy/forum/index.php
@@ -7,7 +7,7 @@ use RuntimeException;
 $mode = (string)filter_input(INPUT_GET, 'm');
 
 $currentUser = $msz->authInfo->userInfo;
-$currentUserId = $currentUser === null ? '0' : $currentUser->getId();
+$currentUserId = $currentUser === null ? '0' : $currentUser->id;
 
 if($mode === 'mark') {
     if(!$msz->authInfo->isLoggedIn)
diff --git a/public-legacy/forum/post.php b/public-legacy/forum/post.php
index 5dea152e..bdee9172 100644
--- a/public-legacy/forum/post.php
+++ b/public-legacy/forum/post.php
@@ -13,7 +13,7 @@ if(!empty($postMode) && !$msz->authInfo->isLoggedIn)
     Template::displayInfo('You must be logged in to manage posts.', 401);
 
 $currentUser = $msz->authInfo->userInfo;
-$currentUserId = $currentUser === null ? '0' : $currentUser->getId();
+$currentUserId = $currentUser === null ? '0' : $currentUser->id;
 
 if($postMode !== '' && $msz->usersCtx->hasActiveBan($currentUser))
     Template::displayInfo('You have been banned, check your profile for more information.', 403);
@@ -43,7 +43,7 @@ switch($postMode) {
             if(!$perms->check(Perm::F_POST_DELETE_OWN))
                 Template::displayInfo('You are not allowed to delete posts.', 403);
 
-            if($postInfo->userId !== $currentUser->getId())
+            if($postInfo->userId !== $currentUser->id)
                 Template::displayInfo('You can only delete your own posts.', 403);
 
             // posts may only be deleted within a week of creation, this should be a config value
diff --git a/public-legacy/forum/posting.php b/public-legacy/forum/posting.php
index df44aab9..f3f2e63f 100644
--- a/public-legacy/forum/posting.php
+++ b/public-legacy/forum/posting.php
@@ -12,7 +12,7 @@ if(!$msz->authInfo->isLoggedIn)
     Template::throwError(401);
 
 $currentUser = $msz->authInfo->userInfo;
-$currentUserId = $currentUser->getId();
+$currentUserId = $currentUser->id;
 if($msz->usersCtx->hasActiveBan($currentUser))
     Template::throwError(403);
 
diff --git a/public-legacy/forum/topic.php b/public-legacy/forum/topic.php
index 20796b05..6e708238 100644
--- a/public-legacy/forum/topic.php
+++ b/public-legacy/forum/topic.php
@@ -11,7 +11,7 @@ $moderationMode = !empty($_GET['m']) && is_string($_GET['m']) ? (string)$_GET['m
 $submissionConfirmed = !empty($_GET['confirm']) && is_string($_GET['confirm']) && $_GET['confirm'] === '1';
 
 $currentUser = $msz->authInfo->userInfo;
-$currentUserId = $currentUser === null ? '0' : $currentUser->getId();
+$currentUserId = $currentUser === null ? '0' : $currentUser->id;
 
 if($topicId < 1 && $postId > 0) {
     try {
@@ -123,7 +123,7 @@ if(in_array($moderationMode, $validModerationModes, true)) {
                 if(!$canDeleteOwn)
                     Template::displayInfo("You aren't allowed to delete topics.", 403);
 
-                if($topicInfo->userId !== $currentUser->getId())
+                if($topicInfo->userId !== $currentUser->id)
                     Template::displayInfo('You can only delete your own topics.', 403);
 
                 // topics may only be deleted within a day of creation, this should be a config value
diff --git a/public-legacy/manage/users/ban.php b/public-legacy/manage/users/ban.php
index e2d26ace..1e97df02 100644
--- a/public-legacy/manage/users/ban.php
+++ b/public-legacy/manage/users/ban.php
@@ -64,8 +64,8 @@ while($_SERVER['REQUEST_METHOD'] === 'POST' && CSRF::validateRequest()) {
         severity: $severity, modInfo: $modInfo
     );
 
-    $msz->createAuditLog('BAN_CREATE', [$banInfo->id, $userInfo->getId()]);
-    Tools::redirect($msz->urls->format('manage-users-bans', ['user' => $userInfo->getId()]));
+    $msz->createAuditLog('BAN_CREATE', [$banInfo->id, $userInfo->id]);
+    Tools::redirect($msz->urls->format('manage-users-bans', ['user' => $userInfo->id]));
     return;
 }
 
diff --git a/public-legacy/manage/users/note.php b/public-legacy/manage/users/note.php
index aff56313..ace27355 100644
--- a/public-legacy/manage/users/note.php
+++ b/public-legacy/manage/users/note.php
@@ -63,7 +63,7 @@ while($_SERVER['REQUEST_METHOD'] === 'POST' && CSRF::validateRequest()) {
 
     $msz->createAuditLog(
         $isNew ? 'MOD_NOTE_CREATE' : 'MOD_NOTE_UPDATE',
-        [$noteInfo->id, $userInfo->getId()]
+        [$noteInfo->id, $userInfo->id]
     );
 
     // this is easier
diff --git a/public-legacy/manage/users/user.php b/public-legacy/manage/users/user.php
index 45b8c4f2..bc5905e7 100644
--- a/public-legacy/manage/users/user.php
+++ b/public-legacy/manage/users/user.php
@@ -37,7 +37,7 @@ try {
 $currentUserRank = $msz->usersCtx->users->getUserRank($currentUser);
 $userRank = $msz->usersCtx->users->getUserRank($userInfo);
 
-$canEdit = $canManageUsers && ($currentUser->super || (string)$currentUser->getId() === $userInfo->getId() || $currentUserRank > $userRank);
+$canEdit = $canManageUsers && ($currentUser->super || (string)$currentUser->id === $userInfo->id || $currentUserRank > $userRank);
 $canEditPerms = $canEdit && $canManagePerms;
 
 $permsInfos = $msz->perms->getPermissionInfo(userInfo: $userInfo, categoryNames: Perm::INFO_FOR_USER);
@@ -54,15 +54,15 @@ if(CSRF::validateRequest() && $canEdit) {
             $allowToImpersonate = $currentUser->super;
 
             if(!$allowToImpersonate) {
-                $allowImpersonateUsers = $msz->config->getArray(sprintf('impersonate.allow.u%s', $currentUser->getId()));
-                $allowToImpersonate = in_array($userInfo->getId(), $allowImpersonateUsers, true);
+                $allowImpersonateUsers = $msz->config->getArray(sprintf('impersonate.allow.u%s', $currentUser->id));
+                $allowToImpersonate = in_array($userInfo->id, $allowImpersonateUsers, true);
             }
 
             if($allowToImpersonate) {
-                $msz->createAuditLog('USER_IMPERSONATE', [$userInfo->getId(), $userInfo->name]);
+                $msz->createAuditLog('USER_IMPERSONATE', [$userInfo->id, $userInfo->name]);
 
                 $tokenBuilder = $msz->authInfo->tokenInfo->toBuilder();
-                $tokenBuilder->setImpersonatedUserId($userInfo->getId());
+                $tokenBuilder->setImpersonatedUserId($userInfo->id);
                 $tokenInfo = $tokenBuilder->toInfo();
 
                 AuthTokenCookie::apply($tokenPacker->pack($tokenInfo));
@@ -108,7 +108,7 @@ if(CSRF::validateRequest() && $canEdit) {
             if($roleInfo->default || !($currentUser->super || $userRank > $roleInfo->rank))
                 continue;
 
-            if(!in_array($roleInfo->getId(), $applyRoles))
+            if(!in_array($roleInfo->id, $applyRoles))
                 $removeRoles[] = $roleInfo;
         }
 
@@ -212,10 +212,10 @@ if(CSRF::validateRequest() && $canEdit) {
     if($permsNeedRecalc)
         $msz->perms->precalculatePermissions(
             $msz->forumCtx->categories,
-            [$userInfo->getId()]
+            [$userInfo->id]
         );
 
-    Tools::redirect($msz->urls->format('manage-user', ['user' => $userInfo->getId()]));
+    Tools::redirect($msz->urls->format('manage-user', ['user' => $userInfo->id]));
     return;
 }
 
diff --git a/public-legacy/manage/users/warning.php b/public-legacy/manage/users/warning.php
index 5196fcd9..d35c2e2b 100644
--- a/public-legacy/manage/users/warning.php
+++ b/public-legacy/manage/users/warning.php
@@ -38,8 +38,8 @@ while($_SERVER['REQUEST_METHOD'] === 'POST' && CSRF::validateRequest()) {
         $userInfo, $body, modInfo: $modInfo
     );
 
-    $msz->createAuditLog('WARN_CREATE', [$warnInfo->id, $userInfo->getId()]);
-    Tools::redirect($msz->urls->format('manage-users-warnings', ['user' => $userInfo->getId()]));
+    $msz->createAuditLog('WARN_CREATE', [$warnInfo->id, $userInfo->id]);
+    Tools::redirect($msz->urls->format('manage-users-warnings', ['user' => $userInfo->id]));
     return;
 }
 
diff --git a/public-legacy/profile.php b/public-legacy/profile.php
index acf384af..4cb7dd62 100644
--- a/public-legacy/profile.php
+++ b/public-legacy/profile.php
@@ -16,7 +16,7 @@ $isEditing = !empty($_GET['edit']) && is_string($_GET['edit']) ? (bool)$_GET['ed
 
 $viewerInfo = $msz->authInfo->userInfo;
 $viewingAsGuest = $viewerInfo === null;
-$viewerId = $viewingAsGuest ? '0' : $viewerInfo->getId();
+$viewerId = $viewingAsGuest ? '0' : $viewerInfo->id;
 
 try {
     $userInfo = $msz->usersCtx->getUserInfo($userId, 'profile');
@@ -66,7 +66,7 @@ $viewerPermsUser = $msz->authInfo->getPerms('user');
 
 $activeBanInfo = $msz->usersCtx->tryGetActiveBan($userInfo);
 $isBanned = $activeBanInfo !== null;
-$viewingOwnProfile = (string)$viewerId === $userInfo->getId();
+$viewingOwnProfile = (string)$viewerId === $userInfo->id;
 $canManageWarnings = $viewerPermsUser->check(Perm::U_WARNINGS_MANAGE);
 $canEdit = !$viewingAsGuest && ((!$isBanned && $viewingOwnProfile) || $viewerInfo->super || (
     $viewerPermsUser->check(Perm::U_USERS_MANAGE) && ($viewingOwnProfile || $viewerRank > $userRank)
diff --git a/public-legacy/search.php b/public-legacy/search.php
index 7ce50ed3..2e1ef86f 100644
--- a/public-legacy/search.php
+++ b/public-legacy/search.php
@@ -69,7 +69,7 @@ if(!empty($searchQuery)) {
 
     if(empty($searchQueryEvaluated['type']) || str_starts_with($searchQueryEvaluated['type'], 'forum')) {
         $currentUser = $msz->authInfo->userInfo;
-        $currentUserId = $currentUser === null ? 0 : (int)$currentUser->getId();
+        $currentUserId = $currentUser === null ? 0 : (int)$currentUser->id;
 
         $forumCategoryIds = XArray::where(
             $msz->forumCtx->categories->getCategories(hidden: false),
diff --git a/public-legacy/settings/account.php b/public-legacy/settings/account.php
index b621c4ce..d36af892 100644
--- a/public-legacy/settings/account.php
+++ b/public-legacy/settings/account.php
@@ -35,7 +35,7 @@ if(!$isRestricted && $isVerifiedRequest && !empty($_POST['role'])) {
                     $msz->usersCtx->users->removeRoles($userInfo, $roleInfo);
                     $msz->perms->precalculatePermissions(
                         $msz->forumCtx->categories,
-                        [$userInfo->getId()]
+                        [$userInfo->id]
                     );
                 } else
                     $errors[] = "You're not allow to leave this role, an administrator has to remove it for you.";
@@ -110,7 +110,7 @@ if($isVerifiedRequest && !empty($_POST['current_password'])) {
 
 // reload $userInfo object
 if($_SERVER['REQUEST_METHOD'] === 'POST' && $isVerifiedRequest)
-    $userInfo = $msz->usersCtx->users->getUser($userInfo->getId(), 'id');
+    $userInfo = $msz->usersCtx->users->getUser($userInfo->id, 'id');
 
 $userRoles = iterator_to_array($msz->usersCtx->roles->getRoles(userInfo: $userInfo));
 
diff --git a/public-legacy/settings/data.php b/public-legacy/settings/data.php
index a8f95d75..cd14b825 100644
--- a/public-legacy/settings/data.php
+++ b/public-legacy/settings/data.php
@@ -13,7 +13,7 @@ $dbConn = $msz->dbConn;
 function db_to_zip(ZipArchive $archive, UserInfo $userInfo, string $baseName, array $fieldInfos, string $userIdField = 'user_id'): string {
     global $dbConn;
 
-    $userId = $userInfo->getId();
+    $userId = $userInfo->id;
     $fields = [];
 
     foreach($fieldInfos as $key => $fieldInfo) {
@@ -107,7 +107,7 @@ if(isset($_POST['action']) && is_string($_POST['action'])) {
                 $msz->createAuditLog('PERSONAL_DATA_DOWNLOAD');
 
                 $timeStamp = floor(time() / 3600) * 3600;
-                $fileName = sprintf('msz-user-data-%d-%d.zip', $userInfo->getId(), $timeStamp);
+                $fileName = sprintf('msz-user-data-%d-%d.zip', $userInfo->id, $timeStamp);
                 $filePath = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $fileName;
                 $archive = new ZipArchive;
 
diff --git a/public-legacy/settings/sessions.php b/public-legacy/settings/sessions.php
index 45ef5c92..ec757a86 100644
--- a/public-legacy/settings/sessions.php
+++ b/public-legacy/settings/sessions.php
@@ -23,7 +23,7 @@ while($_SERVER['REQUEST_METHOD'] === 'POST' && CSRF::validateRequest()) {
             $sessionInfo = $msz->authCtx->sessions->getSession(sessionId: $sessionId);
         } catch(RuntimeException $ex) {}
 
-        if(empty($sessionInfo) || $sessionInfo->userId !== $currentUser->getId()) {
+        if(empty($sessionInfo) || $sessionInfo->userId !== $currentUser->id) {
             $errors[] = "That session doesn't exist.";
             break;
         }
diff --git a/public/index.php b/public/index.php
index d9d3a4b2..2a87e010 100644
--- a/public/index.php
+++ b/public/index.php
@@ -81,7 +81,7 @@ if($tokenInfo->hasUserId && $tokenInfo->hasSessionToken) {
                     $impersonatedUserId = $tokenInfo->impersonatedUserId;
 
                     if(!$allowToImpersonate) {
-                        $allowImpersonateUsers = $cfg->getArray(sprintf('impersonate.allow.u%s', $userInfo->getId()));
+                        $allowImpersonateUsers = $cfg->getArray(sprintf('impersonate.allow.u%s', $userInfo->id));
                         $allowToImpersonate = in_array((string)$impersonatedUserId, $allowImpersonateUsers, true);
                     }
 
diff --git a/src/AuditLog/AuditLog.php b/src/AuditLog/AuditLog.php
index 180a12d1..6c23fd23 100644
--- a/src/AuditLog/AuditLog.php
+++ b/src/AuditLog/AuditLog.php
@@ -18,7 +18,7 @@ class AuditLog {
         ?string $remoteAddr = null
     ): int {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasUserInfo = $userInfo !== null;
         $hasRemoteAddr = $remoteAddr !== null;
@@ -58,7 +58,7 @@ class AuditLog {
         ?Pagination $pagination = null
     ): iterable {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasUserInfo = $userInfo !== null;
         $hasRemoteAddr = $remoteAddr !== null;
@@ -103,7 +103,7 @@ class AuditLog {
         string $countryCode = 'XX'
     ): void {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         // action names should have stricter validation,
         // i do want to switch to a lowercase colon separated format later but i'll save that for the unified log in Hanyuu
diff --git a/src/Auth/AuthInfo.php b/src/Auth/AuthInfo.php
index a009025a..1da4fd95 100644
--- a/src/Auth/AuthInfo.php
+++ b/src/Auth/AuthInfo.php
@@ -42,7 +42,7 @@ class AuthInfo {
     }
 
     public ?string $userId {
-        get => $this->userInfo?->getId();
+        get => $this->userInfo?->id;
     }
 
     public ?string $sessionId {
@@ -54,7 +54,7 @@ class AuthInfo {
     }
 
     public ?string $realUserId {
-        get => $this->realUserInfo?->getId();
+        get => $this->realUserInfo?->id;
     }
 
     public function getPerms(
diff --git a/src/Auth/AuthRpcHandler.php b/src/Auth/AuthRpcHandler.php
index 88482f9e..03da5e13 100644
--- a/src/Auth/AuthRpcHandler.php
+++ b/src/Auth/AuthRpcHandler.php
@@ -19,7 +19,7 @@ final class AuthRpcHandler implements RpcHandler {
         if($impersonator->super)
             return true;
 
-        $whitelist = $this->impersonateConfig->getArray(sprintf('allow.u%s', $impersonator->getId()));
+        $whitelist = $this->impersonateConfig->getArray(sprintf('allow.u%s', $impersonator->id));
         return in_array($targetId, $whitelist, true);
     }
 
@@ -56,7 +56,7 @@ final class AuthRpcHandler implements RpcHandler {
         return [
             'method' => 'misuzu',
             'type' => 'user',
-            'user' => $userInfo->getId(),
+            'user' => $userInfo->id,
             'expires' => $sessionInfo->expiresTime,
         ];
     }
diff --git a/src/Auth/AuthTokenBuilder.php b/src/Auth/AuthTokenBuilder.php
index 1cbbe613..71334e7d 100644
--- a/src/Auth/AuthTokenBuilder.php
+++ b/src/Auth/AuthTokenBuilder.php
@@ -35,7 +35,7 @@ class AuthTokenBuilder {
 
     public function setUserId(UserInfo|string $userId): void {
         if($userId instanceof UserInfo)
-            $userId = $userId->getId();
+            $userId = $userId->id;
 
         $this->setProperty(AuthTokenInfo::USER_ID, $userId);
     }
@@ -57,7 +57,7 @@ class AuthTokenBuilder {
 
     public function setImpersonatedUserId(UserInfo|string $userId): void {
         if($userId instanceof UserInfo)
-            $userId = $userId->getId();
+            $userId = $userId->id;
 
         $this->setProperty(AuthTokenInfo::IMPERSONATED_USER_ID, $userId);
     }
diff --git a/src/Auth/LoginAttempts.php b/src/Auth/LoginAttempts.php
index b8027a75..57808c04 100644
--- a/src/Auth/LoginAttempts.php
+++ b/src/Auth/LoginAttempts.php
@@ -23,7 +23,7 @@ class LoginAttempts {
         int|null $timeRange = null
     ): int {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasSuccess = $success !== null;
         $hasUserInfo = $userInfo !== null;
@@ -78,7 +78,7 @@ class LoginAttempts {
         ?Pagination $pagination = null
     ): iterable {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasSuccess = $success !== null;
         $hasUserInfo = $userInfo !== null;
@@ -128,7 +128,7 @@ class LoginAttempts {
         UserInfo|string|null $userInfo = null
     ): void {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasUserInfo = $userInfo !== null;
         $clientInfo = json_encode($clientInfo ?? ClientInfo::parse($userAgentString));
diff --git a/src/Auth/RecoveryTokens.php b/src/Auth/RecoveryTokens.php
index e4ede85e..70edde72 100644
--- a/src/Auth/RecoveryTokens.php
+++ b/src/Auth/RecoveryTokens.php
@@ -28,7 +28,7 @@ class RecoveryTokens {
         ?bool $isUnused = null
     ): RecoveryTokenInfo {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasUserInfo = $userInfo !== null;
         $hasRemoteAddr = $remoteAddr !== null;
@@ -75,7 +75,7 @@ class RecoveryTokens {
         string $remoteAddr
     ): RecoveryTokenInfo {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $verifyCode = self::generateCode();
 
diff --git a/src/Auth/Sessions.php b/src/Auth/Sessions.php
index 850d6196..a7b6a4b5 100644
--- a/src/Auth/Sessions.php
+++ b/src/Auth/Sessions.php
@@ -26,7 +26,7 @@ class Sessions {
         UserInfo|string|null $userInfo = null
     ): int {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasUserInfo = $userInfo !== null;
 
@@ -57,7 +57,7 @@ class Sessions {
         ?Pagination $pagination = null
     ): iterable {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasUserInfo = $userInfo !== null;
         $hasPagination = $pagination !== null;
@@ -126,7 +126,7 @@ class Sessions {
         ?ClientInfo $clientInfo = null
     ): SessionInfo {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $sessionToken = self::generateToken();
         $clientInfo = json_encode($clientInfo ?? ClientInfo::parse($userAgentString));
@@ -225,7 +225,7 @@ class Sessions {
         if($hasUserInfos)
             foreach($userInfos as $userInfo) {
                 if($userInfo instanceof UserInfo)
-                    $userInfo = $userInfo->getId();
+                    $userInfo = $userInfo->id;
                 elseif(!is_string($userInfo))
                     throw new InvalidArgumentException('$userInfos must be strings or instances of UserInfo.');
 
diff --git a/src/Auth/TwoFactorAuthSessions.php b/src/Auth/TwoFactorAuthSessions.php
index ca0d33d4..5ced1307 100644
--- a/src/Auth/TwoFactorAuthSessions.php
+++ b/src/Auth/TwoFactorAuthSessions.php
@@ -18,7 +18,7 @@ class TwoFactorAuthSessions {
 
     public function createToken(UserInfo|string $userInfo): string {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $token = self::generateToken();
 
diff --git a/src/Changelog/Changelog.php b/src/Changelog/Changelog.php
index aa0ce4bb..11f1d51c 100644
--- a/src/Changelog/Changelog.php
+++ b/src/Changelog/Changelog.php
@@ -67,7 +67,7 @@ class Changelog {
         ?array $tags = null
     ): int {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if($dateTime instanceof DateTimeInterface)
             $dateTime = (int)$dateTime->format('U');
 
@@ -120,7 +120,7 @@ class Changelog {
         ?Pagination $pagination = null
     ): iterable {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if($dateTime instanceof DateTimeInterface)
             $dateTime = (int)$dateTime->format('U');
 
@@ -191,7 +191,7 @@ class Changelog {
         if(is_string($action))
             $action = self::convertToActionId($action);
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if($createdAt instanceof DateTimeInterface)
             $createdAt = (int)$createdAt->format('U');
 
@@ -238,7 +238,7 @@ class Changelog {
         if(is_string($action))
             $action = self::convertToActionId($action);
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if($createdAt instanceof DateTimeInterface)
             $createdAt = (int)$createdAt->format('U');
 
diff --git a/src/Comments/Comments.php b/src/Comments/Comments.php
index 78a2e45e..08aaa800 100644
--- a/src/Comments/Comments.php
+++ b/src/Comments/Comments.php
@@ -20,7 +20,7 @@ class Comments {
         UserInfo|string|null $owner = null
     ): int {
         if($owner instanceof UserInfo)
-            $owner = $owner->getId();
+            $owner = $owner->id;
 
         $hasOwner = $owner !== null;
 
@@ -46,7 +46,7 @@ class Comments {
         ?Pagination $pagination = null
     ): iterable {
         if($owner instanceof UserInfo)
-            $owner = $owner->getId();
+            $owner = $owner->id;
 
         $hasOwner = $owner !== null;
         $hasPagination = $pagination !== null;
@@ -141,7 +141,7 @@ class Comments {
 
     public function createCategory(string $name, UserInfo|string|null $owner = null): CommentsCategoryInfo {
         if($owner instanceof UserInfo)
-            $owner = $owner->getId();
+            $owner = $owner->id;
 
         $name = trim($name);
         if(empty($name))
@@ -173,7 +173,7 @@ class Comments {
         if($category instanceof CommentsCategoryInfo)
             $category = $category->id;
         if($owner instanceof UserInfo)
-            $owner = $owner->getId();
+            $owner = $owner->id;
 
         if($name !== null) {
             $name = trim($name);
@@ -248,7 +248,7 @@ class Comments {
         elseif($hasCategoryInfo)
             $stmt->addParameter(++$args, $categoryInfo);
         if($hasUserInfo)
-            $stmt->addParameter(++$args, $userInfo instanceof UserInfo ? $userInfo->getId() : $userInfo);
+            $stmt->addParameter(++$args, $userInfo instanceof UserInfo ? $userInfo->id : $userInfo);
         $stmt->execute();
 
         $result = $stmt->getResult();
@@ -319,7 +319,7 @@ class Comments {
         elseif($hasCategoryInfo)
             $stmt->addParameter(++$args, $categoryInfo);
         if($hasUserInfo)
-            $stmt->addParameter(++$args, $userInfo instanceof UserInfo ? $userInfo->getId() : $userInfo);
+            $stmt->addParameter(++$args, $userInfo instanceof UserInfo ? $userInfo->id : $userInfo);
         $stmt->execute();
 
         return $stmt->getResult()->getIterator(fn($result) => CommentsPostInfo::fromResult($result, $includeRepliesCount, $includeVotesCount));
@@ -370,7 +370,7 @@ class Comments {
         if($category === null)
             throw new InvalidArgumentException('$category is null; at least a $category or $parent must be specified.');
         if($user instanceof UserInfo)
-            $user = $user->getId();
+            $user = $user->id;
         if(empty(trim($body)))
             throw new InvalidArgumentException('$body may not be empty.');
 
@@ -450,7 +450,7 @@ class Comments {
         if($post instanceof CommentsPostInfo)
             $post = $post->id;
         if($user instanceof UserInfo)
-            $user = $user->getId();
+            $user = $user->id;
 
         // SUM() here makes it so a result row is always returned, albeit with just NULLs
         $stmt = $this->cache->get('SELECT comment_id, user_id, SUM(comment_vote) FROM msz_comments_votes WHERE comment_id = ? AND user_id = ?');
@@ -475,7 +475,7 @@ class Comments {
         if($post instanceof CommentsPostInfo)
             $post = $post->id;
         if($user instanceof UserInfo)
-            $user = $user->getId();
+            $user = $user->id;
 
         $stmt = $this->cache->get('REPLACE INTO msz_comments_votes (comment_id, user_id, comment_vote) VALUES (?, ?, ?)');
         $stmt->addParameter(1, $post);
@@ -499,7 +499,7 @@ class Comments {
         if($post instanceof CommentsPostInfo)
             $post = $post->id;
         if($user instanceof UserInfo)
-            $user = $user->getId();
+            $user = $user->id;
 
         $stmt = $this->cache->get('DELETE FROM msz_comments_votes WHERE comment_id = ? AND user_id = ?');
         $stmt->addParameter(1, $post);
diff --git a/src/Comments/CommentsCategoryInfo.php b/src/Comments/CommentsCategoryInfo.php
index 6feebb30..74fa2df4 100644
--- a/src/Comments/CommentsCategoryInfo.php
+++ b/src/Comments/CommentsCategoryInfo.php
@@ -42,7 +42,7 @@ class CommentsCategoryInfo {
         if($this->ownerId === null)
             return false;
         if($user instanceof UserInfo)
-            $user = $user->getId();
+            $user = $user->id;
         return $user === $this->ownerId;
     }
 }
diff --git a/src/Forum/ForumCategories.php b/src/Forum/ForumCategories.php
index 8d48a9e5..7948c00a 100644
--- a/src/Forum/ForumCategories.php
+++ b/src/Forum/ForumCategories.php
@@ -326,7 +326,7 @@ class ForumCategories {
         if(!is_array($categoryInfos))
             $categoryInfos = [$categoryInfos];
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $args = 0;
         $stmt = $this->cache->get(sprintf(
@@ -356,7 +356,7 @@ class ForumCategories {
             return;
 
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if($categoryInfo instanceof ForumCategoryInfo)
             $categoryInfo = $categoryInfo->id;
 
@@ -395,7 +395,7 @@ class ForumCategories {
         ?bool $deleted = null
     ): object {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasExceptCategoryInfos = !empty($exceptCategoryInfos);
         $hasExceptTopicInfos = !empty($exceptTopicInfos);
diff --git a/src/Forum/ForumContext.php b/src/Forum/ForumContext.php
index a9e024e3..6e7d1803 100644
--- a/src/Forum/ForumContext.php
+++ b/src/Forum/ForumContext.php
@@ -26,7 +26,7 @@ class ForumContext {
         if($userInfo === null)
             return 0;
 
-        $userId = $userInfo instanceof UserInfo ? $userInfo->getId() : $userInfo;
+        $userId = $userInfo instanceof UserInfo ? $userInfo->id : $userInfo;
         if(array_key_exists($userId, $this->totalUserTopics))
             return $this->totalUserTopics[$userId];
 
@@ -38,7 +38,7 @@ class ForumContext {
         if($userInfo === null)
             return 0;
 
-        $userId = $userInfo instanceof UserInfo ? $userInfo->getId() : $userInfo;
+        $userId = $userInfo instanceof UserInfo ? $userInfo->id : $userInfo;
         if(array_key_exists($userId, $this->totalUserPosts))
             return $this->totalUserPosts[$userId];
 
diff --git a/src/Forum/ForumPosts.php b/src/Forum/ForumPosts.php
index 7388b342..09e50108 100644
--- a/src/Forum/ForumPosts.php
+++ b/src/Forum/ForumPosts.php
@@ -30,7 +30,7 @@ class ForumPosts {
         if($topicInfo instanceof ForumTopicInfo)
             $topicInfo = $topicInfo->id;
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if($upToPostInfo instanceof ForumPostInfo)
             $upToPostInfo = $upToPostInfo->id;
 
@@ -113,7 +113,7 @@ class ForumPosts {
         if($topicInfo instanceof ForumTopicInfo)
             $topicInfo = $topicInfo->id;
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if($upToPostInfo instanceof ForumPostInfo)
             $upToPostInfo = $upToPostInfo->id;
         if($afterPostInfo instanceof ForumPostInfo)
@@ -213,7 +213,7 @@ class ForumPosts {
             $values[] = $postId;
         } elseif($hasUserInfo) {
             $query .= ' WHERE user_id = ?';
-            $values[] = $userInfo instanceof UserInfo ? $userInfo->getId() : $userInfo;
+            $values[] = $userInfo instanceof UserInfo ? $userInfo->id : $userInfo;
             $query .= sprintf(' ORDER BY post_id %s', $getLast ? 'DESC' : 'ASC');
         } elseif($hasTopicInfo) {
             if($topicInfo instanceof ForumTopicInfo)
@@ -280,7 +280,7 @@ class ForumPosts {
             throw new InvalidArgumentException('$categoryInfo may only be null if $topicInfo is an instance of ForumTopicInfo.');
 
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $stmt = $this->cache->get('INSERT INTO msz_forum_posts (topic_id, forum_id, user_id, post_ip, post_text, post_parse, post_display_signature) VALUES (?, ?, ?, INET6_ATON(?), ?, ?, ?)');
         $stmt->addParameter(1, $topicInfo);
@@ -372,7 +372,7 @@ class ForumPosts {
 
     public function getUserLastPostCreatedTime(UserInfo|string $userInfo): int {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         // intentionally including deleted posts
         $stmt = $this->cache->get('SELECT UNIX_TIMESTAMP(MAX(post_created)) FROM msz_forum_posts WHERE user_id = ?');
diff --git a/src/Forum/ForumTopicRedirects.php b/src/Forum/ForumTopicRedirects.php
index a28d8c14..1e1efeaa 100644
--- a/src/Forum/ForumTopicRedirects.php
+++ b/src/Forum/ForumTopicRedirects.php
@@ -17,7 +17,7 @@ class ForumTopicRedirects {
         UserInfo|string|null $userInfo = null
     ): int {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasUserInfo = $userInfo !== null;
 
@@ -39,7 +39,7 @@ class ForumTopicRedirects {
         ?Pagination $pagination = null
     ): iterable {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasUserInfo = $userInfo !== null;
         $hasPagination = $pagination !== null;
@@ -101,7 +101,7 @@ class ForumTopicRedirects {
         if($topicInfo instanceof ForumTopicInfo)
             $topicInfo = $topicInfo->id;
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $stmt = $this->cache->get('INSERT INTO msz_forum_topics_redirects (topic_id, user_id, topic_redir_url) VALUES (?, ?, ?)');
         $stmt->addParameter(1, $topicInfo);
diff --git a/src/Forum/ForumTopics.php b/src/Forum/ForumTopics.php
index 2c4dd946..cd300aa1 100644
--- a/src/Forum/ForumTopics.php
+++ b/src/Forum/ForumTopics.php
@@ -26,7 +26,7 @@ class ForumTopics {
         if($categoryInfo instanceof ForumCategoryInfo)
             $categoryInfo = $categoryInfo->id;
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasCategoryInfo = $categoryInfo !== null;
         $hasUserInfo = $userInfo !== null;
@@ -120,7 +120,7 @@ class ForumTopics {
         if($categoryInfo instanceof ForumCategoryInfo)
             $categoryInfo = $categoryInfo->id;
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasCategoryInfo = $categoryInfo !== null;
         $hasUserInfo = $userInfo !== null;
@@ -248,7 +248,7 @@ class ForumTopics {
         if($categoryInfo instanceof ForumCategoryInfo)
             $categoryInfo = $categoryInfo->id;
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $stmt = $this->cache->get('INSERT INTO msz_forum_topics (forum_id, user_id, topic_type, topic_title) VALUES (?, ?, ?, ?)');
         $stmt->addParameter(1, $categoryInfo);
@@ -379,7 +379,7 @@ class ForumTopics {
         if($topicInfo instanceof ForumTopicInfo)
             $topicInfo = $topicInfo->id;
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $stmt = $this->cache->get('SELECT COUNT(*) FROM msz_forum_posts WHERE topic_id = ? AND user_id = ?');
         $stmt->addParameter(1, $topicInfo);
@@ -406,7 +406,7 @@ class ForumTopics {
             $query .= ' AND track_last_read = (SELECT topic_bumped FROM msz_forum_topics WHERE topic_id = ftt.topic_id AND topic_bumped >= NOW() - INTERVAL 1 MONTH)';
 
         $stmt = $this->cache->get($query);
-        $stmt->addParameter(1, $userInfo instanceof UserInfo ? $userInfo->getId() : $userInfo);
+        $stmt->addParameter(1, $userInfo instanceof UserInfo ? $userInfo->id : $userInfo);
         $stmt->addParameter(2, $topicInfoIsInstance ? $topicInfo->id : $topicInfo);
         $stmt->execute();
         $result = $stmt->getResult();
@@ -425,7 +425,7 @@ class ForumTopics {
         ?bool $deleted = null
     ): object {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasExceptCategoryInfos = !empty($exceptCategoryInfos);
         $hasExceptTopicInfos = !empty($exceptTopicInfos);
@@ -484,7 +484,7 @@ class ForumTopics {
 
         $stmt = $this->cache->get('SELECT COUNT(*) FROM msz_forum_topics_track WHERE topic_id = ? AND user_id = ?');
         $stmt->addParameter(1, $topicInfo instanceof ForumTopicInfo ? $topicInfo->id : $topicInfo);
-        $stmt->addParameter(2, $userInfo instanceof UserInfo ? $userInfo->getId() : $userInfo);
+        $stmt->addParameter(2, $userInfo instanceof UserInfo ? $userInfo->id : $userInfo);
         $stmt->execute();
         $result = $stmt->getResult();
 
@@ -500,7 +500,7 @@ class ForumTopics {
             return;
 
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         if($topicInfo instanceof ForumTopicInfo) {
             $categoryInfo = $topicInfo->categoryId;
diff --git a/src/Hanyuu/HanyuuRpcHandler.php b/src/Hanyuu/HanyuuRpcHandler.php
index f36989d4..b8609dbf 100644
--- a/src/Hanyuu/HanyuuRpcHandler.php
+++ b/src/Hanyuu/HanyuuRpcHandler.php
@@ -46,7 +46,7 @@ final class HanyuuRpcHandler implements RpcHandler {
 
         return in_array(
             $targetId,
-            $this->impersonateConfig->getArray(sprintf('allow.u%s', $impersonator->getId())),
+            $this->impersonateConfig->getArray(sprintf('allow.u%s', $impersonator->id)),
             true
         );
     }
@@ -125,7 +125,7 @@ final class HanyuuRpcHandler implements RpcHandler {
 
         $gatherRequestedAvatars = function($userInfo) use ($avatarResolutions, $baseUrl) {
             $formatAvatarUrl = fn($res = 0) => (
-                $baseUrl . $this->urls->format('user-avatar', ['user' => $userInfo->getId(), 'res' => $res])
+                $baseUrl . $this->urls->format('user-avatar', ['user' => $userInfo->id, 'res' => $res])
             );
 
             $avatars = ['original' => $formatAvatarUrl()];
@@ -137,15 +137,15 @@ final class HanyuuRpcHandler implements RpcHandler {
         };
 
         $extractUserInfo = fn($userInfo) => [
-            'id' => $userInfo->getId(),
+            'id' => $userInfo->id,
             'name' => $userInfo->name,
-            'colour' => (string)$users->getUserColour($userInfo),
-            'rank' => $users->getUserRank($userInfo),
+            'colour' => (string)$this->usersCtx->users->getUserColour($userInfo),
+            'rank' => $this->usersCtx->users->getUserRank($userInfo),
             'is_super' => $userInfo->super,
             'country_code' => $userInfo->countryCode,
             'is_deleted' => $userInfo->deleted,
             'has_totp' => $userInfo->hasTOTP,
-            'profile_url' => $baseUrl . $this->urls->format('user-profile', ['user' => $userInfo->getId()]),
+            'profile_url' => $baseUrl . $this->urls->format('user-profile', ['user' => $userInfo->id]),
             'avatars' => $gatherRequestedAvatars($userInfo),
         ];
 
diff --git a/src/Messages/MessagesDatabase.php b/src/Messages/MessagesDatabase.php
index 9ee7f3a3..074103de 100644
--- a/src/Messages/MessagesDatabase.php
+++ b/src/Messages/MessagesDatabase.php
@@ -66,11 +66,11 @@ class MessagesDatabase {
         $stmt = $this->cache->get($query);
 
         if($hasOwnerInfo)
-            $stmt->addParameter(++$args, $ownerInfo instanceof UserInfo ? $ownerInfo->getId() : $ownerInfo);
+            $stmt->addParameter(++$args, $ownerInfo instanceof UserInfo ? $ownerInfo->id : $ownerInfo);
         if($hasAuthorInfo)
-            $stmt->addParameter(++$args, $authorInfo instanceof UserInfo ? $authorInfo->getId() : $authorInfo);
+            $stmt->addParameter(++$args, $authorInfo instanceof UserInfo ? $authorInfo->id : $authorInfo);
         if($hasRecipientInfo)
-            $stmt->addParameter(++$args, $recipientInfo instanceof UserInfo ? $recipientInfo->getId() : $recipientInfo);
+            $stmt->addParameter(++$args, $recipientInfo instanceof UserInfo ? $recipientInfo->id : $recipientInfo);
         if($hasRepliesFor)
             $stmt->addParameter(++$args, $repliesFor instanceof MessageInfo ? $repliesFor->id : $repliesFor);
         if($hasReplyTo)
@@ -137,11 +137,11 @@ class MessagesDatabase {
         $stmt = $this->cache->get($query);
 
         if($hasOwnerInfo)
-            $stmt->addParameter(++$args, $ownerInfo instanceof UserInfo ? $ownerInfo->getId() : $ownerInfo);
+            $stmt->addParameter(++$args, $ownerInfo instanceof UserInfo ? $ownerInfo->id : $ownerInfo);
         if($hasAuthorInfo)
-            $stmt->addParameter(++$args, $authorInfo instanceof UserInfo ? $authorInfo->getId() : $authorInfo);
+            $stmt->addParameter(++$args, $authorInfo instanceof UserInfo ? $authorInfo->id : $authorInfo);
         if($hasRecipientInfo)
-            $stmt->addParameter(++$args, $recipientInfo instanceof UserInfo ? $recipientInfo->getId() : $recipientInfo);
+            $stmt->addParameter(++$args, $recipientInfo instanceof UserInfo ? $recipientInfo->id : $recipientInfo);
         if($hasRepliesFor)
             $stmt->addParameter(++$args, $repliesFor instanceof MessageInfo ? $repliesFor->id : $repliesFor);
         if($hasReplyTo)
@@ -170,7 +170,7 @@ class MessagesDatabase {
             $stmt->addParameter(1, $useReplyTo ? $messageInfoOrId->replyToId : $messageInfoOrId->id);
         else
             $stmt->addParameter(1, $messageInfoOrId);
-        $stmt->addParameter(2, $ownerInfo instanceof UserInfo ? $ownerInfo->getId() : $ownerInfo);
+        $stmt->addParameter(2, $ownerInfo instanceof UserInfo ? $ownerInfo->id : $ownerInfo);
         $stmt->execute();
 
         $result = $stmt->getResult();
@@ -194,9 +194,9 @@ class MessagesDatabase {
     ): MessageInfo {
         $stmt = $this->cache->get('INSERT INTO msz_messages (msg_id, msg_owner_id, msg_author_id, msg_recipient_id, msg_reply_to, msg_title, msg_body, msg_parser, msg_sent, msg_read) VALUES (?, ?, ?, ?, ?, TO_BASE64(?), TO_BASE64(?), ?, FROM_UNIXTIME(?), FROM_UNIXTIME(?))');
         $stmt->addParameter(1, $messageId);
-        $stmt->addParameter(2, $ownerInfo instanceof UserInfo ? $ownerInfo->getId() : $ownerInfo);
-        $stmt->addParameter(3, $authorInfo instanceof UserInfo ? $authorInfo->getId() : $authorInfo);
-        $stmt->addParameter(4, $recipientInfo instanceof UserInfo ? $recipientInfo->getId() : $recipientInfo);
+        $stmt->addParameter(2, $ownerInfo instanceof UserInfo ? $ownerInfo->id : $ownerInfo);
+        $stmt->addParameter(3, $authorInfo instanceof UserInfo ? $authorInfo->id : $authorInfo);
+        $stmt->addParameter(4, $recipientInfo instanceof UserInfo ? $recipientInfo->id : $recipientInfo);
         $stmt->addParameter(5, $replyTo instanceof MessageInfo ? $replyTo->id : $replyTo);
         $stmt->addParameter(6, $title);
         $stmt->addParameter(7, $body);
@@ -224,7 +224,7 @@ class MessagesDatabase {
 
         if($ownerInfo !== null) {
             $whereQuery[] = 'msg_owner_id = ?';
-            $whereValues[] = $ownerInfo instanceof UserInfo ? $ownerInfo->getId() : $ownerInfo;
+            $whereValues[] = $ownerInfo instanceof UserInfo ? $ownerInfo->id : $ownerInfo;
         }
 
         if($messageInfo !== null) {
@@ -301,7 +301,7 @@ class MessagesDatabase {
         $stmt = $this->cache->get($query);
 
         if($hasOwnerInfo)
-            $stmt->addParameter(++$args, $ownerInfo instanceof UserInfo ? $ownerInfo->getId() : $ownerInfo);
+            $stmt->addParameter(++$args, $ownerInfo instanceof UserInfo ? $ownerInfo->id : $ownerInfo);
         if($hasMessageInfos)
             foreach($messageInfos as $messageInfo) {
                 if(is_string($messageInfo))
@@ -339,7 +339,7 @@ class MessagesDatabase {
         $stmt = $this->cache->get($query);
 
         if($hasOwnerInfo)
-            $stmt->addParameter(++$args, $ownerInfo instanceof UserInfo ? $ownerInfo->getId() : $ownerInfo);
+            $stmt->addParameter(++$args, $ownerInfo instanceof UserInfo ? $ownerInfo->id : $ownerInfo);
         if($hasMessageInfos)
             foreach($messageInfos as $messageInfo) {
                 if(is_string($messageInfo))
@@ -377,7 +377,7 @@ class MessagesDatabase {
         $stmt = $this->cache->get($query);
 
         if($hasOwnerInfo)
-            $stmt->addParameter(++$args, $ownerInfo instanceof UserInfo ? $ownerInfo->getId() : $ownerInfo);
+            $stmt->addParameter(++$args, $ownerInfo instanceof UserInfo ? $ownerInfo->id : $ownerInfo);
         if($hasMessageInfos)
             foreach($messageInfos as $messageInfo) {
                 if(is_string($messageInfo))
diff --git a/src/Messages/MessagesRoutes.php b/src/Messages/MessagesRoutes.php
index 1aa5a734..7a55bb6b 100644
--- a/src/Messages/MessagesRoutes.php
+++ b/src/Messages/MessagesRoutes.php
@@ -178,11 +178,11 @@ class MessagesRoutes implements RouteHandler, UrlSource {
             ];
 
         return [
-            'id' => $userInfo->getId(),
+            'id' => $userInfo->id,
             'name' => $userInfo->name,
             'ban' => $this->usersCtx->hasActiveBan($userInfo),
             'avatar' => $this->urls->format('user-avatar', [
-                'user' => $userInfo->getId(),
+                'user' => $userInfo->id,
                 'res' => 200,
             ]),
         ];
@@ -413,7 +413,7 @@ class MessagesRoutes implements RouteHandler, UrlSource {
         );
 
         // recipient copy
-        if($sentAt !== null && $recipientInfo->getId() !== $selfInfo->getId())
+        if($sentAt !== null && $recipientInfo->id !== $selfInfo->id)
             $msgsDb->createMessage(
                 messageId: $msgId,
                 ownerInfo: $recipientInfo,
@@ -464,7 +464,7 @@ class MessagesRoutes implements RouteHandler, UrlSource {
             ];
         }
 
-        if($messageInfo->authorId === null || $messageInfo->authorId !== $selfInfo->getId())
+        if($messageInfo->authorId === null || $messageInfo->authorId !== $selfInfo->id)
             return [
                 'error' => [
                     'name' => 'msgs:not_author',
@@ -504,7 +504,7 @@ class MessagesRoutes implements RouteHandler, UrlSource {
         );
 
         // recipient copy
-        if($sentAt !== null && $messageInfo->recipientId !== $selfInfo->getId())
+        if($sentAt !== null && $messageInfo->recipientId !== $selfInfo->id)
             $msgsDb->createMessage(
                 messageId: $messageId,
                 ownerInfo: $messageInfo->recipientId,
diff --git a/src/News/News.php b/src/News/News.php
index de2b9e1b..d838b34b 100644
--- a/src/News/News.php
+++ b/src/News/News.php
@@ -289,7 +289,7 @@ class News {
         if($categoryInfo instanceof NewsCategoryInfo)
             $categoryInfo = $categoryInfo->id;
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if($schedule instanceof DateTimeInterface)
             $schedule = (int)$schedule->format('U');
 
@@ -356,7 +356,7 @@ class News {
         if($categoryInfo instanceof NewsCategoryInfo)
             $categoryInfo = $categoryInfo->id;
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if($schedule instanceof DateTimeInterface)
             $schedule = (int)$schedule->format('U');
 
diff --git a/src/News/NewsRoutes.php b/src/News/NewsRoutes.php
index 619f5246..2b2e9505 100644
--- a/src/News/NewsRoutes.php
+++ b/src/News/NewsRoutes.php
@@ -198,7 +198,7 @@ class NewsRoutes implements RouteHandler, UrlSource {
 
                 if($userInfo !== null) {
                     $item->setAuthorName($userInfo->name);
-                    $item->setAuthorUrl($siteUrl . $this->urls->format('user-profile', ['user' => $userInfo->getId()]));
+                    $item->setAuthorUrl($siteUrl . $this->urls->format('user-profile', ['user' => $userInfo->id]));
                 }
 
                 $itemUpdatedAt = $postInfo->updatedTime;
diff --git a/src/Perms/Permissions.php b/src/Perms/Permissions.php
index e0a97364..b88eb2f4 100644
--- a/src/Perms/Permissions.php
+++ b/src/Perms/Permissions.php
@@ -53,9 +53,9 @@ class Permissions {
         $args = 0;
         $stmt = $this->cache->get($query);
         if($hasUserInfo)
-            $stmt->addParameter(++$args, $userInfo instanceof UserInfo ? $userInfo->getId() : $userInfo);
+            $stmt->addParameter(++$args, $userInfo instanceof UserInfo ? $userInfo->id : $userInfo);
         if($hasRoleInfo)
-            $stmt->addParameter(++$args, $roleInfo instanceof RoleInfo ? $roleInfo->getId() : $roleInfo);
+            $stmt->addParameter(++$args, $roleInfo instanceof RoleInfo ? $roleInfo->id : $roleInfo);
         if($hasForumCategoryInfo)
             $stmt->addParameter(++$args, $forumCategoryInfo instanceof ForumCategoryInfo ? $forumCategoryInfo->id : $forumCategoryInfo);
         if($hasCategoryName) {
@@ -102,8 +102,8 @@ class Permissions {
             return;
 
         $stmt = $this->cache->get('INSERT INTO msz_perms (user_id, role_id, forum_id, perms_category, perms_allow, perms_deny) VALUES (?, ?, ?, ?, ?, ?)');
-        $stmt->addParameter(1, $userInfo instanceof UserInfo ? $userInfo->getId() : $userInfo);
-        $stmt->addParameter(2, $roleInfo instanceof RoleInfo ? $roleInfo->getId() : $roleInfo);
+        $stmt->addParameter(1, $userInfo instanceof UserInfo ? $userInfo->id : $userInfo);
+        $stmt->addParameter(2, $roleInfo instanceof RoleInfo ? $roleInfo->id : $roleInfo);
         $stmt->addParameter(3, $forumCategoryInfo instanceof ForumCategoryInfo ? $forumCategoryInfo->id : $forumCategoryInfo);
         $stmt->addParameter(4, $categoryName);
         $stmt->addParameter(5, $allow);
@@ -133,9 +133,9 @@ class Permissions {
         $args = 0;
         $stmt = $this->cache->get($query);
         if($hasUserInfo)
-            $stmt->addParameter(++$args, $userInfo instanceof UserInfo ? $userInfo->getId() : $userInfo);
+            $stmt->addParameter(++$args, $userInfo instanceof UserInfo ? $userInfo->id : $userInfo);
         if($hasRoleInfo)
-            $stmt->addParameter(++$args, $roleInfo instanceof RoleInfo ? $roleInfo->getId() : $roleInfo);
+            $stmt->addParameter(++$args, $roleInfo instanceof RoleInfo ? $roleInfo->id : $roleInfo);
         if($hasForumCategoryInfo)
             $stmt->addParameter(++$args, $forumCategoryInfo instanceof ForumCategoryInfo ? $forumCategoryInfo->id : $forumCategoryInfo);
         if($categoryNamesIsArray) {
@@ -166,7 +166,7 @@ class Permissions {
         if($hasForumCategoryInfo)
             $stmt->addParameter(++$args, $forumCategoryInfo instanceof ForumCategoryInfo ? $forumCategoryInfo->id : $forumCategoryInfo);
         if($hasUserInfo)
-            $stmt->addParameter(++$args, $userInfo instanceof UserInfo ? $userInfo->getId() : $userInfo);
+            $stmt->addParameter(++$args, $userInfo instanceof UserInfo ? $userInfo->id : $userInfo);
         $stmt->execute();
 
         $result = $stmt->getResult();
@@ -202,7 +202,7 @@ class Permissions {
         if($hasForumCategoryInfo)
             $stmt->addParameter(++$args, $forumCategoryInfo instanceof ForumCategoryInfo ? $forumCategoryInfo->id : $forumCategoryInfo);
         if($hasUserInfo)
-            $stmt->addParameter(++$args, $userInfo instanceof UserInfo ? $userInfo->getId() : $userInfo);
+            $stmt->addParameter(++$args, $userInfo instanceof UserInfo ? $userInfo->id : $userInfo);
         $stmt->execute();
 
         $result = $stmt->getResult();
diff --git a/src/Profile/ProfileFields.php b/src/Profile/ProfileFields.php
index b6ce01e1..6fdf8de1 100644
--- a/src/Profile/ProfileFields.php
+++ b/src/Profile/ProfileFields.php
@@ -145,7 +145,7 @@ class ProfileFields {
 
     public function getFieldValues(UserInfo|string $userInfo): iterable {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         // i don't really want to bother with the join for the ordering so i'll just do that somewhere in PHP for now
         // will probably add the ability for people to order them in whatever way they want, as well as visibility controls
@@ -163,7 +163,7 @@ class ProfileFields {
         if($fieldInfo instanceof ProfileFieldInfo)
             $fieldInfo = $fieldInfo->id;
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $stmt = $this->cache->get('SELECT field_id, user_id, format_id, field_value FROM msz_profile_fields_values WHERE field_id = ? AND user_id = ?');
         $stmt->addParameter(1, $fieldInfo);
@@ -199,7 +199,7 @@ class ProfileFields {
             throw new InvalidArgumentException('$fieldsInfos and $values have the same amount of values and be in the same order.');
 
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $rows = [];
 
@@ -243,7 +243,7 @@ class ProfileFields {
         if(empty($fieldInfos))
             return;
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         if(!is_array($fieldInfos))
             $fieldInfos = [$fieldInfos];
diff --git a/src/Satori/SatoriRoutes.php b/src/Satori/SatoriRoutes.php
index a329891a..f649faf3 100644
--- a/src/Satori/SatoriRoutes.php
+++ b/src/Satori/SatoriRoutes.php
@@ -89,7 +89,7 @@ final class SatoriRoutes implements RouteHandler {
                 'topic_title' => $topicInfo->title,
                 'forum_id' => (int)$categoryInfo->id,
                 'forum_name' => $categoryInfo->name,
-                'user_id' => (int)$userInfo->getId(),
+                'user_id' => (int)$userInfo->id,
                 'username' => $userInfo->name,
                 'user_colour' => Colour::toMisuzu($userColour),
                 'is_opening_post' => $postInfo->id === $firstPostInfo->id ? 1 : 0,
@@ -117,7 +117,7 @@ final class SatoriRoutes implements RouteHandler {
 
         foreach($userInfos as $userInfo)
             $users[] = [
-                'user_id' => (int)$userInfo->getId(),
+                'user_id' => (int)$userInfo->id,
                 'username' => $userInfo->name,
             ];
 
diff --git a/src/SharpChat/SharpChatRoutes.php b/src/SharpChat/SharpChatRoutes.php
index c19dd3cc..b27808f2 100644
--- a/src/SharpChat/SharpChatRoutes.php
+++ b/src/SharpChat/SharpChatRoutes.php
@@ -80,7 +80,7 @@ final class SharpChatRoutes implements RouteHandler {
         if($impersonator->super)
             return true;
 
-        $whitelist = $this->impersonateConfig->getArray(sprintf('allow.u%s', $impersonator->getId()));
+        $whitelist = $this->impersonateConfig->getArray(sprintf('allow.u%s', $impersonator->id));
         return in_array($targetId, $whitelist, true);
     }
 
@@ -128,7 +128,7 @@ final class SharpChatRoutes implements RouteHandler {
         $userInfo = $this->usersCtx->users->getUser($sessionInfo->userId, 'id');
         $userId = $tokenInfo->hasImpersonatedUserId && $this->canImpersonateUserId($userInfo, $tokenInfo->impersonatedUserId)
             ? $tokenInfo->impersonatedUserId
-            : $userInfo->getId();
+            : $userInfo->id;
 
         $tokenPacker = $this->authCtx->createAuthTokenPacker();
 
@@ -283,7 +283,7 @@ final class SharpChatRoutes implements RouteHandler {
 
         return [
             'success' => true,
-            'user_id' => (int)$userInfo->getId(),
+            'user_id' => (int)$userInfo->id,
             'username' => $userInfo->name,
             'colour_raw' => Colour::toMisuzu($userColour),
             'rank' => $userRank,
@@ -346,7 +346,7 @@ final class SharpChatRoutes implements RouteHandler {
         if($userIdIsName)
             try {
                 $userInfo = $this->usersCtx->users->getUser($userId, 'name');
-                $userId = (string)$userInfo->getId();
+                $userId = (string)$userInfo->id;
             } catch(RuntimeException $ex) {
                 $userId = '';
             }
diff --git a/src/TemplatingExtension.php b/src/TemplatingExtension.php
index 6612f551..36e49707 100644
--- a/src/TemplatingExtension.php
+++ b/src/TemplatingExtension.php
@@ -129,7 +129,7 @@ final class TemplatingExtension extends AbstractExtension {
 
             $menu[] = [
                 'title' => 'Profile',
-                'url' => $this->ctx->urls->format('user-profile', ['user' => $userInfo->getId()]),
+                'url' => $this->ctx->urls->format('user-profile', ['user' => $userInfo->id]),
                 'icon' => 'fas fa-user fa-fw',
             ];
             if($globalPerms->check(Perm::G_MESSAGES_VIEW))
diff --git a/src/Users/Assets/UserImageAsset.php b/src/Users/Assets/UserImageAsset.php
index cb41a34d..b134583d 100644
--- a/src/Users/Assets/UserImageAsset.php
+++ b/src/Users/Assets/UserImageAsset.php
@@ -21,7 +21,7 @@ abstract class UserImageAsset implements UserImageAssetInterface {
     protected string $userId;
 
     public function __construct(UserInfo $userInfo) {
-        $this->userId = (string)$userInfo->getId();
+        $this->userId = (string)$userInfo->id;
     }
 
     public function getUserId(): string {
diff --git a/src/Users/Bans.php b/src/Users/Bans.php
index 252ed090..b209ad05 100644
--- a/src/Users/Bans.php
+++ b/src/Users/Bans.php
@@ -25,7 +25,7 @@ class Bans {
         ?bool $activeOnly = null
     ): int {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasUserInfo = $userInfo !== null;
         $hasActiveOnly = $activeOnly !== null;
@@ -64,7 +64,7 @@ class Bans {
         ?Pagination $pagination = null
     ): iterable {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasUserInfo = $userInfo !== null;
         $hasActiveOnly = $activeOnly !== null;
@@ -119,7 +119,7 @@ class Bans {
         int $minimumSeverity = self::SEVERITY_MIN
     ): int {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         // orders by ban_expires descending with NULLs (permanent) first
         $stmt = $this->cache->get('SELECT COUNT(*) FROM msz_users_bans WHERE user_id = ? AND ban_severity >= ? AND (ban_expires IS NULL OR ban_expires > NOW()) ORDER BY ban_expires IS NULL DESC, ban_expires DESC');
@@ -136,7 +136,7 @@ class Bans {
         int $minimumSeverity = self::SEVERITY_MIN
     ): ?BanInfo {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         // orders by ban_expires descending with NULLs (permanent) first
         $stmt = $this->cache->get('SELECT ban_id, user_id, mod_id, ban_severity, ban_reason_public, ban_reason_private, UNIX_TIMESTAMP(ban_created), UNIX_TIMESTAMP(ban_expires) FROM msz_users_bans WHERE user_id = ? AND ban_severity >= ? AND (ban_expires IS NULL OR ban_expires > NOW()) ORDER BY ban_expires IS NULL DESC, ban_expires DESC');
@@ -159,9 +159,9 @@ class Bans {
         if($severity < self::SEVERITY_MIN || $severity > self::SEVERITY_MAX)
             throw new InvalidArgumentException('$severity may not be less than -10 or more than 10.');
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if($modInfo instanceof UserInfo)
-            $modInfo = $modInfo->getId();
+            $modInfo = $modInfo->id;
         if($expires instanceof DateTimeInterface)
             $expires = (int)$expires->format('U');
 
diff --git a/src/Users/ModNotes.php b/src/Users/ModNotes.php
index 1a751b0d..686577e7 100644
--- a/src/Users/ModNotes.php
+++ b/src/Users/ModNotes.php
@@ -20,9 +20,9 @@ class ModNotes {
         UserInfo|string|null $authorInfo = null
     ): int {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if($authorInfo instanceof UserInfo)
-            $authorInfo = $authorInfo->getId();
+            $authorInfo = $authorInfo->id;
 
         $hasUserInfo = $userInfo !== null;
         $hasAuthorInfo = $authorInfo !== null;
@@ -59,9 +59,9 @@ class ModNotes {
         ?Pagination $pagination = null
     ): iterable {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if($authorInfo instanceof UserInfo)
-            $authorInfo = $authorInfo->getId();
+            $authorInfo = $authorInfo->id;
 
         $hasUserInfo = $userInfo !== null;
         $hasAuthorInfo = $authorInfo !== null;
@@ -113,9 +113,9 @@ class ModNotes {
         UserInfo|string|null $authorInfo = null
     ): ModNoteInfo {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if($authorInfo instanceof UserInfo)
-            $authorInfo = $authorInfo->getId();
+            $authorInfo = $authorInfo->id;
 
         $stmt = $this->cache->get('INSERT INTO msz_users_modnotes (user_id, author_id, note_title, note_body) VALUES (?, ?, ?, ?)');
         $stmt->addParameter(1, $userInfo);
diff --git a/src/Users/Roles.php b/src/Users/Roles.php
index 042da681..2b10586e 100644
--- a/src/Users/Roles.php
+++ b/src/Users/Roles.php
@@ -23,7 +23,7 @@ class Roles {
         ?bool $hidden = null
     ): int {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasUserInfo = $userInfo !== null;
         $hasHidden = $hidden !== null;
@@ -60,7 +60,7 @@ class Roles {
         ?Pagination $pagination = null
     ): iterable {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasUserInfo = $userInfo !== null;
         $hasHidden = $hidden !== null;
diff --git a/src/Users/UserInfo.php b/src/Users/UserInfo.php
index 42982172..a4bdbce5 100644
--- a/src/Users/UserInfo.php
+++ b/src/Users/UserInfo.php
@@ -57,10 +57,6 @@ class UserInfo {
         );
     }
 
-    public function getId(): string {
-        return $this->id;
-    }
-
     public bool $hasPasswordHash {
         get => $this->passwordHash !== null && $this->passwordHash !== '';
     }
diff --git a/src/Users/Users.php b/src/Users/Users.php
index 5eba2b16..d5cda549 100644
--- a/src/Users/Users.php
+++ b/src/Users/Users.php
@@ -47,9 +47,9 @@ class Users {
         ?bool $deleted = null
     ): int {
         if($roleInfo instanceof RoleInfo)
-            $roleInfo = $roleInfo->getId();
+            $roleInfo = $roleInfo->id;
         if($after instanceof UserInfo)
-            $after = $after->getId();
+            $after = $after->id;
 
         $hasRoleInfo = $roleInfo !== null;
         $hasAfter = $after !== null;
@@ -137,9 +137,9 @@ class Users {
         }
 
         if($roleInfo instanceof RoleInfo)
-            $roleInfo = $roleInfo->getId();
+            $roleInfo = $roleInfo->id;
         if($after instanceof UserInfo)
-            $after = $after->getId();
+            $after = $after->id;
 
         $hasRoleInfo = $roleInfo !== null;
         $hasAfter = $after !== null;
@@ -286,7 +286,7 @@ class Users {
         RoleInfo|string|null $displayRoleInfo = null
     ): UserInfo {
         if($displayRoleInfo instanceof RoleInfo)
-            $displayRoleInfo = $displayRoleInfo->getId();
+            $displayRoleInfo = $displayRoleInfo->id;
         elseif($displayRoleInfo === null)
             $displayRoleInfo = Roles::DEFAULT_ROLE;
 
@@ -330,9 +330,9 @@ class Users {
         ?string $title = null
     ): void {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if($displayRoleInfo instanceof RoleInfo)
-            $displayRoleInfo = $displayRoleInfo->getId();
+            $displayRoleInfo = $displayRoleInfo->id;
 
         $fields = [];
         $values = [];
@@ -436,7 +436,7 @@ class Users {
         string $remoteAddr
     ): void {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $stmt = $this->cache->get('UPDATE msz_users SET user_active = NOW(), last_ip = INET6_ATON(?) WHERE user_id = ?');
         $stmt->addParameter(1, $remoteAddr);
@@ -449,9 +449,9 @@ class Users {
         RoleInfo|string $roleInfo
     ): bool {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if($roleInfo instanceof RoleInfo)
-            $roleInfo = $roleInfo->getId();
+            $roleInfo = $roleInfo->id;
 
         return in_array($roleInfo, $this->hasRoles($userInfo, $roleInfo));
     }
@@ -461,7 +461,7 @@ class Users {
         RoleInfo|string|array $roleInfos
     ): array {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if(!is_array($roleInfos))
             $roleInfos = [$roleInfos];
         elseif(empty($roleInfos))
@@ -476,7 +476,7 @@ class Users {
 
         foreach($roleInfos as $roleInfo) {
             if($roleInfo instanceof RoleInfo)
-                $roleInfo = $roleInfo->getId();
+                $roleInfo = $roleInfo->id;
             elseif(!is_string($roleInfo))
                 throw new InvalidArgumentException('$roleInfos must be strings of instances of RoleInfo.');
 
@@ -499,7 +499,7 @@ class Users {
         RoleInfo|string|array $roleInfos
     ): void {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if(!is_array($roleInfos))
             $roleInfos = [$roleInfos];
         elseif(empty($roleInfos))
@@ -513,7 +513,7 @@ class Users {
         $args = 0;
         foreach($roleInfos as $roleInfo) {
             if($roleInfo instanceof RoleInfo)
-                $roleInfo = $roleInfo->getId();
+                $roleInfo = $roleInfo->id;
             elseif(!is_string($roleInfo))
                 throw new InvalidArgumentException('$roleInfos must be strings of instances of RoleInfo.');
 
@@ -529,7 +529,7 @@ class Users {
         RoleInfo|string|array $roleInfos
     ): void {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if(!is_array($roleInfos))
             $roleInfos = [$roleInfos];
         elseif(empty($roleInfos))
@@ -544,7 +544,7 @@ class Users {
 
         foreach($roleInfos as $roleInfo) {
             if($roleInfo instanceof RoleInfo)
-                $roleInfo = $roleInfo->getId();
+                $roleInfo = $roleInfo->id;
             elseif(!is_string($roleInfo))
                 throw new InvalidArgumentException('$roleInfos must be strings of instances of RoleInfo.');
 
@@ -579,7 +579,7 @@ class Users {
 
     public function getUserRank(UserInfo|string $userInfo): int {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $stmt = $this->cache->get('SELECT MAX(role_hierarchy) FROM msz_roles WHERE role_id IN (SELECT role_id FROM msz_users_roles WHERE user_id = ?)');
         $stmt->addParameter(1, $userInfo);
diff --git a/src/Users/UsersContext.php b/src/Users/UsersContext.php
index fd7e6e5a..8f2a2e6d 100644
--- a/src/Users/UsersContext.php
+++ b/src/Users/UsersContext.php
@@ -31,7 +31,7 @@ class UsersContext {
             return $this->userInfos[$value];
 
         $userInfo = $this->users->getUser($value, $select);
-        $userId = $userInfo->getId();
+        $userId = $userInfo->id;
 
         return $this->userInfos[$userId] = $userInfo;
     }
@@ -39,7 +39,7 @@ class UsersContext {
     public function getUserColour(UserInfo|string|null $userInfo): Colour {
         if($userInfo === null)
             return Colour::none();
-        $userId = $userInfo instanceof UserInfo ? $userInfo->getId() : $userInfo;
+        $userId = $userInfo instanceof UserInfo ? $userInfo->id : $userInfo;
 
         if(array_key_exists($userId, $this->userColours))
             return $this->userColours[$userId];
@@ -51,7 +51,7 @@ class UsersContext {
         if($userInfo === null)
             return 0;
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         if(array_key_exists($userInfo, $this->userRanks))
             return $this->userRanks[$userInfo];
@@ -66,7 +66,7 @@ class UsersContext {
         if($userInfo === null)
             return null;
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         if(!array_key_exists($userInfo, $this->activeBans))
             $this->activeBans[$userInfo] = $this->bans->tryGetActiveBan($userInfo);
diff --git a/src/Users/UsersRpcHandler.php b/src/Users/UsersRpcHandler.php
index 2bcc6b37..d074f533 100644
--- a/src/Users/UsersRpcHandler.php
+++ b/src/Users/UsersRpcHandler.php
@@ -43,7 +43,7 @@ final class UsersRpcHandler implements RpcHandler {
 
         $output = [];
 
-        $output['id'] = $userInfo->getId();
+        $output['id'] = $userInfo->id;
         $output['name'] = $userInfo->name;
         if($includeEMailAddress)
             $output['email'] = $userInfo->emailAddress;
@@ -70,13 +70,13 @@ final class UsersRpcHandler implements RpcHandler {
         if($userInfo->lastActiveTime !== null)
             $output['last_active_at'] = $userInfo->lastActiveAt->toIso8601ZuluString();
 
-        $output['profile_url'] = $baseUrl . $this->urls->format('user-profile', ['user' => $userInfo->getId()]);
-        $output['avatar_url'] = $baseUrl . $this->urls->format('user-avatar', ['user' => $userInfo->getId()]);
+        $output['profile_url'] = $baseUrl . $this->urls->format('user-profile', ['user' => $userInfo->id]);
+        $output['avatar_url'] = $baseUrl . $this->urls->format('user-avatar', ['user' => $userInfo->id]);
 
         /* Remove the following later */
         $avatars = [];
         $formatAvatarUrl = fn($res = 0) => (
-            $baseUrl . $this->urls->format('user-avatar', ['user' => $userInfo->getId(), 'res' => $res])
+            $baseUrl . $this->urls->format('user-avatar', ['user' => $userInfo->id, 'res' => $res])
         );
 
         $avatars[] = ['res' => 0, 'url' => $formatAvatarUrl()];
diff --git a/src/Users/Warnings.php b/src/Users/Warnings.php
index 563b1ea1..4dd93148 100644
--- a/src/Users/Warnings.php
+++ b/src/Users/Warnings.php
@@ -25,7 +25,7 @@ class Warnings {
         ?int $backlog = null
     ): int {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasUserInfo = $userInfo !== null;
         $hasBacklog = $backlog !== null;
@@ -72,7 +72,7 @@ class Warnings {
         ?Pagination $pagination = null
     ): iterable {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
 
         $hasUserInfo = $userInfo !== null;
         $hasBacklog = $backlog !== null;
@@ -127,9 +127,9 @@ class Warnings {
         UserInfo|string|null $modInfo
     ): WarningInfo {
         if($userInfo instanceof UserInfo)
-            $userInfo = $userInfo->getId();
+            $userInfo = $userInfo->id;
         if($modInfo instanceof UserInfo)
-            $modInfo = $modInfo->getId();
+            $modInfo = $modInfo->id;
 
         $stmt = $this->cache->get('INSERT INTO msz_users_warnings (user_id, mod_id, warn_body) VALUES (?, ?, ?)');
         $stmt->addParameter(1, $userInfo);