瀏覽代碼

Fix 生成用户错误

兔姬桑 4 年之前
父節點
當前提交
12318aa359

+ 31 - 0
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
     {

+ 1 - 1
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, '后台批量生成用户');
             }

+ 10 - 9
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');

+ 1 - 0
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,
     ];
 });

+ 1 - 2
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');
     }
 }