diff --git a/app/Components/Helpers.php b/app/Components/Helpers.php index 9758612b..b54b2998 100644 --- a/app/Components/Helpers.php +++ b/app/Components/Helpers.php @@ -50,6 +50,37 @@ class Helpers return $code; } + /** + * 添加用户. + * + * @param string $email 用户邮箱 + * @param string $password 用户密码 + * @param int $transfer_enable 可用流量 + * @param int|null $date 可使用天数 + * @param int|null $inviter_id 邀请人 + * @param string|null $username 昵称 + * @return User + */ + public static function addUser(string $email, string $password, int $transfer_enable, int $date = null, int $inviter_id = null, string $username = null): User + { + return User::create([ + 'username' => $username ?? $email, + 'email' => $email, + 'password' => $password, + 'port' => self::getPort(), // 生成一个可用端口 + 'passwd' => Str::random(), + 'vmess_id' => Str::uuid(), + 'method' => self::getDefaultMethod(), + 'protocol' => self::getDefaultProtocol(), + 'obfs' => self::getDefaultObfs(), + 'transfer_enable' => $transfer_enable, + 'expired_at' => date('Y-m-d', strtotime('+'.$date.' days')), + 'user_group_id' => null, + 'reg_ip' => IP::getClientIp(), + 'inviter_id' => $inviter_id, + ]); + } + // 获取一个有效端口 public static function getPort(): int { diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index b00f6c3f..13c5df91 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -263,7 +263,7 @@ class UserController extends Controller try { for ($i = 0; $i < (int) request('amount', 1); $i++) { - $user = factory(User::class)->create($preset); + $user = Helpers::addUser(Str::random(8).'@auto.generate', Str::random(), 1024 * GB, 365); // 写入用户流量变动记录 Helpers::addUserTrafficModifyLog($user->id, null, 0, 1024 * GB, '后台批量生成用户'); } diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 824cfa2d..58f3d657 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -241,13 +241,13 @@ class AuthController extends Controller if (Invite::whereCode($code)->whereStatus(0)->doesntExist()) { return Redirect::back()->withInput($request->except('code'))->withErrors(trans('auth.code_error')); } - } elseif (sysConfig('is_invite_register') == 2) { // 必须使用邀请码 + } elseif ((int) sysConfig('is_invite_register') === 2) { // 必须使用邀请码 return Redirect::back()->withInput()->withErrors(trans('auth.code_null')); } } // 注册前发送激活码 - if (sysConfig('is_activate_account') == 1) { + if ((int) sysConfig('is_activate_account') === 1) { if (! $verify_code) { return Redirect::back()->withInput($request->except('verify_code'))->withErrors(trans('auth.captcha_null')); } @@ -288,9 +288,7 @@ class AuthController extends Controller $transfer_enable = MB * ((int) sysConfig('default_traffic') + ($inviter_id ? (int) sysConfig('referral_traffic') : 0)); // 创建新用户 - $user = factory(User::class)->create([ - 'username' => $username, 'email' => $email, 'password' => $password, 'transfer_enable' => $transfer_enable, 'inviter_id' => $inviter_id, - ]); + $user = Helpers::addUser($email, $password, $transfer_enable, sysConfig('default_days'), $inviter_id, $username); // 注册失败,抛出异常 if (! $user) { @@ -306,7 +304,10 @@ class AuthController extends Controller // 更新邀请码 if ($affArr['code_id'] && sysConfig('is_invite_register')) { - Invite::find($affArr['code_id'])->update(['invitee_id' => $user->id, 'status' => 1]); + $invite = Invite::find($affArr['code_id']); + if ($invite) { + $invite->update(['invitee_id' => $user->id, 'status' => 1]); + } } // 清除邀请人Cookie @@ -510,7 +511,7 @@ class AuthController extends Controller $password = $request->input('password'); // 校验账号 - $verify = Verify::type(1)->whereToken($token)->first(); + $verify = Verify::type(1)->whereToken($token)->firstOrFail(); $user = $verify->user; if (! $verify) { return Redirect::route('login'); @@ -573,7 +574,7 @@ class AuthController extends Controller $email = $request->input('email'); // 是否开启账号激活 - if (sysConfig('is_activate_account') != 2) { + if ((int) sysConfig('is_activate_account') !== 2) { return Redirect::back()->withInput()->withErrors(trans('auth.active_close', ['email' => sysConfig('webmaster_email')])); } @@ -620,7 +621,7 @@ class AuthController extends Controller return Redirect::route('login'); } - $verify = Verify::type(1)->with('user')->whereToken($token)->first(); + $verify = Verify::type(1)->with('user')->whereToken($token)->firstOrFail(); $user = $verify->user; if (! $verify) { return Redirect::route('login'); diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 08faf1fc..5d86628c 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -19,5 +19,6 @@ $factory->define(User::class, function (Faker $faker) { 'obfs' => Helpers::getDefaultObfs(), 'transfer_enable' => (int) sysConfig('default_traffic') * MB, 'expired_at' => date('Y-m-d', strtotime('+'.sysConfig('default_days').' days')), + 'user_group_id' => null, ]; }); diff --git a/database/seeds/PresetSeeder.php b/database/seeds/PresetSeeder.php index 8cc81929..08fbbdaf 100644 --- a/database/seeds/PresetSeeder.php +++ b/database/seeds/PresetSeeder.php @@ -7,7 +7,6 @@ use App\Models\Label; use App\Models\Level; use App\Models\Rule; use App\Models\SsConfig; -use App\Models\User; use Illuminate\Database\Seeder; class PresetSeeder extends Seeder @@ -514,7 +513,7 @@ class PresetSeeder extends Seeder } // 生成初始管理账号 - $user = factory(User::class)->create(['username' => '管理员', 'email' => 'test@test.com', 'password' => '123456']); + $user = Helpers::addUser('test@test.com', '123456', 100 * GB, sysConfig('default_days'), null, '管理员'); $user->assignRole('Super Admin'); } }