fix(register): handle invalid invite code gracefully

Fix an issue where entering a non-existent invite code during registration would result in an unclear HTTP code 0 error. Now, the system properly validates the invite code and returns a clear error response if the code does not exist.
This commit is contained in:
xboard
2025-07-13 21:19:33 +08:00
parent 18de0e8a43
commit a01b94f131
2 changed files with 11 additions and 12 deletions
+3
View File
@@ -13,4 +13,7 @@ class InviteCode extends Model
'updated_at' => 'timestamp', 'updated_at' => 'timestamp',
'status' => 'boolean', 'status' => 'boolean',
]; ];
const STATUS_UNUSED = 0;
const STATUS_USED = 1;
} }
+8 -12
View File
@@ -102,27 +102,27 @@ class RegisterService
* 处理邀请码 * 处理邀请码
* *
* @param string $inviteCode 邀请码 * @param string $inviteCode 邀请码
* @return array [邀请人ID或成功状态, 错误消息] * @return int|null 邀请人ID
*/ */
public function handleInviteCode(string $inviteCode): array public function handleInviteCode(string $inviteCode): int|null
{ {
$inviteCodeModel = InviteCode::where('code', $inviteCode) $inviteCodeModel = InviteCode::where('code', $inviteCode)
->where('status', 0) ->where('status', InviteCode::STATUS_UNUSED)
->first(); ->first();
if (!$inviteCodeModel) { if (!$inviteCodeModel) {
if ((int) admin_setting('invite_force', 0)) { if ((int) admin_setting('invite_force', 0)) {
return [false, [400, __('Invalid invitation code')]]; throw new \Exception(__('Invalid invitation code'));
} }
return [null, null]; return null;
} }
if (!(int) admin_setting('invite_never_expire', 0)) { if (!(int) admin_setting('invite_never_expire', 0)) {
$inviteCodeModel->status = true; $inviteCodeModel->status = InviteCode::STATUS_USED;
$inviteCodeModel->save(); $inviteCodeModel->save();
} }
return [$inviteCodeModel->user_id, null]; return $inviteCodeModel->user_id;
} }
@@ -148,11 +148,7 @@ class RegisterService
// 处理邀请码获取邀请人ID // 处理邀请码获取邀请人ID
$inviteUserId = null; $inviteUserId = null;
if ($inviteCode) { if ($inviteCode) {
[$inviteSuccess, $inviteError] = $this->handleInviteCode($inviteCode); $inviteUserId = $this->handleInviteCode($inviteCode);
if (!$inviteSuccess) {
return [false, $inviteError];
}
$inviteUserId = $inviteSuccess;
} }
// 创建用户 // 创建用户