From bcdc4b83e6464c37642d1c127806d49a38228315 Mon Sep 17 00:00:00 2001 From: miguel456 Date: Mon, 22 Aug 2022 17:06:25 +0100 Subject: [PATCH] refactor(auth): move discord handlers to own file --- .../Controllers/Auth/DiscordController.php | 64 +++++++++++++++++++ app/Http/Controllers/Auth/LoginController.php | 11 +--- ...14_210735_add_registration_i_p_to_user.php | 0 ...2022_08_20_195538_add_discord_to_users.php | 14 +++- 4 files changed, 78 insertions(+), 11 deletions(-) create mode 100644 app/Http/Controllers/Auth/DiscordController.php mode change 100644 => 100755 database/migrations/2022_08_14_210735_add_registration_i_p_to_user.php mode change 100644 => 100755 database/migrations/2022_08_20_195538_add_discord_to_users.php diff --git a/app/Http/Controllers/Auth/DiscordController.php b/app/Http/Controllers/Auth/DiscordController.php new file mode 100644 index 0000000..5a3da9a --- /dev/null +++ b/app/Http/Controllers/Auth/DiscordController.php @@ -0,0 +1,64 @@ +. + */ + +namespace App\Http\Controllers\Auth; + +use App\Http\Controllers\Controller; +use App\User; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Crypt; +use Illuminate\Support\Str; +use Laravel\Socialite\Facades\Socialite; + +class DiscordController extends Controller +{ + + + public function discordRedirect() { + return Socialite::driver('discord') + ->scopes(['email', 'guilds.join', 'guilds.members.read', 'guilds']) + ->redirect(); + } + + public function discordCallback() { + + $discordUser = Socialite::driver('discord')->user(); + $appUser = User::upsert([ + 'uuid' => Str::uuid(), + 'name' => $discordUser->getName(), + 'email' => $discordUser->getEmail(), + 'email_verified_at' => now(), // verify the account since it came from a trusted provider + 'username' => $discordUser->getNickname(), + 'currentIp' => \request()->ip(), + 'discord_user_id' => $discordUser->getId(), + 'discord_token' => Crypt::encryptString($discordUser->token), + 'discord_refresh_token' => Crypt::encryptString($discordUser->refreshToken) + ], [ + 'email' => $discordUser->getEmail() + ]); + + Auth::login(User::where('email', $discordUser->getEmail())->first()); + + return redirect() + ->route('dashboard'); + } + +} diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 1f08bb3..b5fd5d6 100755 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -26,8 +26,11 @@ use App\Services\AccountSuspensionService; use App\User; use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Crypt; use Illuminate\Support\Facades\Log; use App\Facades\IP; +use Illuminate\Support\Str; use Laravel\Socialite\Facades\Socialite; class LoginController extends Controller @@ -108,13 +111,5 @@ class LoginController extends Controller } } - public function discordRedirect() { - return Socialite::driver('discord') - ->scopes(['email', 'guilds.join', 'guilds.members.read', 'guilds']) - ->redirect(); - } - public function discordCallback() { - - } } diff --git a/database/migrations/2022_08_14_210735_add_registration_i_p_to_user.php b/database/migrations/2022_08_14_210735_add_registration_i_p_to_user.php old mode 100644 new mode 100755 diff --git a/database/migrations/2022_08_20_195538_add_discord_to_users.php b/database/migrations/2022_08_20_195538_add_discord_to_users.php old mode 100644 new mode 100755 index 8e89fe9..a60df7f --- a/database/migrations/2022_08_20_195538_add_discord_to_users.php +++ b/database/migrations/2022_08_20_195538_add_discord_to_users.php @@ -14,8 +14,13 @@ return new class extends Migration public function up() { Schema::table('users', function (Blueprint $table) { - $table->string('discord_token')->after('remember_token'); - $table->string('discord_refresh_token')->after('discord_token'); + + $table->string('password')->nullable()->change(); // social login requires no pw (still required upon normal reg) + $table->string('registrationIp')->nullable()->change(); + + $table->unsignedBigInteger('discord_user_id')->after('remember_token')->nullable(); + $table->longText('discord_token')->after('discord_user_id')->nullable(); + $table->longText('discord_refresh_token')->after('discord_token')->nullable(); }); } @@ -27,7 +32,10 @@ return new class extends Migration public function down() { Schema::table('users', function (Blueprint $table) { - $table->dropColumn('discord_token', 'discord_refresh_token'); + $table->dropColumn('discord_token', 'discord_refresh_token', 'discord_user_id'); + + $table->string('password')->nullable(false)->change(); + $table->string('registrationIp')->nullable(false)->change(); }); } };