From 272c75a0715f8686a6b2eab8d95fbe643e7bf100 Mon Sep 17 00:00:00 2001 From: 1Day Date: Tue, 31 May 2022 08:39:45 +0200 Subject: [PATCH] Update SocialiteController.php --- .../Controllers/Auth/SocialiteController.php | 35 +++++++++++++------ 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/Auth/SocialiteController.php b/app/Http/Controllers/Auth/SocialiteController.php index c2418ce8..c91a18f3 100644 --- a/app/Http/Controllers/Auth/SocialiteController.php +++ b/app/Http/Controllers/Auth/SocialiteController.php @@ -7,6 +7,7 @@ use App\Models\DiscordUser; use App\Models\Settings; use App\Models\User; use App\Models\Voucher; +use Exception; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Http; use Laravel\Socialite\Facades\Socialite; @@ -35,17 +36,29 @@ class SocialiteController extends Controller $guildId = config("SETTINGS::DISCORD:GUILD_ID"); $roleId = config("SETTINGS::DISCORD:ROLE_ID"); - //save / update discord_users - if (is_null($user->discordUser)) { - //create discord user in db - DiscordUser::create(array_merge($discord->user, ['user_id' => Auth::user()->id])); - //update user - Auth::user()->increment('credits', config('SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_DISCORD')); - Auth::user()->increment('server_limit', config('SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_DISCORD')); - Auth::user()->update(['discord_verified_at' => now()]); - } else { - $user->discordUser->update($discord->user); - } + //save / update discord_users + + //check if discord account is already linked to an cpgg account + if (is_null($user->discordUser)) { + $discordLinked = DiscordUser::where('id', '=', $discord->id)->first(); + if ($discordLinked !== null) { + return redirect()->route('profile.index')->with( + 'error', + 'Discord account already linked!' + ); + } + + //create discord user in db + DiscordUser::create(array_merge($discord->user, ['user_id' => Auth::user()->id])); + + //update user + Auth::user()->increment('credits', config('SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_DISCORD')); + Auth::user()->increment('server_limit', config('SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_DISCORD')); + Auth::user()->update(['discord_verified_at' => now()]); + + } else { + $user->discordUser->update($discord->user); + } //force user into discord server //TODO Add event on failure, to notify ppl involved