diff --git a/app/Admin/Controllers/AuthController.php b/app/Admin/Controllers/AuthController.php index e7c12d2..2c51481 100644 --- a/app/Admin/Controllers/AuthController.php +++ b/app/Admin/Controllers/AuthController.php @@ -49,8 +49,12 @@ class AuthController extends AdminAuthController $openid = $request->input('openid'); $open_type = $request->input('open_type'); if ($openid && $open_type) { - UserSocialite::where(['openid' => $openid, 'type' => SocialiteType::from($open_type), 'user_type' => $user->getMorphClass()])->update([ + UserSocialite::updateOrCreate([ + 'type' => SocialiteType::from($open_type), + 'user_type' => $user->getMorphClass(), 'user_id' => $user->id, + ], [ + 'openid' => $openid, ]); } diff --git a/app/Http/Controllers/Client/AuthController.php b/app/Http/Controllers/Client/AuthController.php index be20108..6a818fc 100644 --- a/app/Http/Controllers/Client/AuthController.php +++ b/app/Http/Controllers/Client/AuthController.php @@ -32,9 +32,7 @@ class AuthController extends Controller $openid = $request->input('openid'); $open_type = $request->input('open_type'); if ($openid && $open_type) { - UserSocialite::where(['openid' => $openid, 'type' => SocialiteType::from($open_type), 'user_type' => $user->getMorphClass()])->update([ - 'user_id' => $user->id, - ]); + $this->updateUserSocialite($user, $openid, SocialiteType::from($open_type)); } $token = $user->createToken('client')->plainTextToken; return $this->response()->success(['token' => $token, 'user' => $user]); @@ -53,9 +51,7 @@ class AuthController extends Controller $openid = $request->input('openid'); $open_type = $request->input('open_type'); if ($openid && $open_type) { - UserSocialite::where(['openid' => $openid, 'type' => SocialiteType::from($open_type), 'user_type' => $user->getMorphClass()])->update([ - 'user_id' => $user->id, - ]); + $this->updateUserSocialite($user, $openid, SocialiteType::from($open_type)); } DB::commit(); $token = $user->createToken('client')->plainTextToken; @@ -65,4 +61,15 @@ class AuthController extends Controller return $this->response()->fail($e->getMessage()); } } + + protected function updateUserSocialite($user, $openid, $type) + { + UserSocialite::updateOrCreate([ + 'type' => $type, + 'user_type' => $user->getMorphClass(), + 'user_id' => $user->id, + ], [ + 'openid' => $openid, + ]); + } } diff --git a/database/migrations/2023_09_21_180557_create_user_socialites_table.php b/database/migrations/2023_09_21_180557_create_user_socialites_table.php index 49f73b2..865c422 100644 --- a/database/migrations/2023_09_21_180557_create_user_socialites_table.php +++ b/database/migrations/2023_09_21_180557_create_user_socialites_table.php @@ -16,7 +16,7 @@ return new class extends Migration $table->string('type'); $table->nullableMorphs('user'); $table->string('openid'); - $table->json('data'); + $table->json('data')->nullable(); $table->timestamps(); }); }