diff --git a/.env.example b/.env.example
index 44853cd..77ccb8b 100644
--- a/.env.example
+++ b/.env.example
@@ -49,3 +49,7 @@ PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
+
+DISCORD_CLIENT_ID =
+DISCORD_CLIENT_SECRET =
+DISCORD_REDIRECT_URI =
diff --git a/app/Http/Controllers/Auth/OAuthController.php b/app/Http/Controllers/Auth/OAuthController.php
new file mode 100644
index 0000000..d6c4aad
--- /dev/null
+++ b/app/Http/Controllers/Auth/OAuthController.php
@@ -0,0 +1,43 @@
+redirect();
+ }
+
+ /**
+ * Handle callback from OAuth driver.
+ *
+ * @return \Illuminate\Http\RedirectResponse
+ */
+ public function store(Request $request, $driver)
+ {
+ $oauth = Socialite::driver($driver)->stateless()->user();
+
+ $user = User::firstOrCreate([ "{$driver}_id" => $oauth->getId() ], [
+ 'username' => $oauth->getNickname()
+ ]);
+
+ Auth::guard('web')->login($user, true);
+
+ $request->session()->regenerate();
+
+ return redirect('/');
+ }
+}
diff --git a/app/Models/User.php b/app/Models/User.php
index 37e34b6..b3dc880 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -17,6 +17,7 @@ class User extends Authenticatable
* @var array
*/
protected $fillable = [
+ 'discord_id',
'username',
'password',
'role'
diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php
index a9f10a6..a008b87 100644
--- a/app/Providers/EventServiceProvider.php
+++ b/app/Providers/EventServiceProvider.php
@@ -18,6 +18,9 @@ class EventServiceProvider extends ServiceProvider
Registered::class => [
SendEmailVerificationNotification::class,
],
+ \SocialiteProviders\Manager\SocialiteWasCalled::class => [
+ 'SocialiteProviders\\Discord\\DiscordExtendSocialite@handle',
+ ]
];
/**
diff --git a/config/app.php b/config/app.php
index 906f887..90080c2 100644
--- a/config/app.php
+++ b/config/app.php
@@ -165,6 +165,7 @@ return [
/*
* Package Service Providers...
*/
+ SocialiteProviders\Manager\ServiceProvider::class,
/*
* Application Service Providers...
diff --git a/config/services.php b/config/services.php
index 2a1d616..59e9934 100644
--- a/config/services.php
+++ b/config/services.php
@@ -30,4 +30,11 @@ return [
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
+ 'discord' => [
+ 'client_id' => env('DISCORD_CLIENT_ID'),
+ 'client_secret' => env('DISCORD_CLIENT_SECRET'),
+ 'redirect' => env('DISCORD_REDIRECT_URI', '/oauth/discord/callback'),
+ 'allow_gif_avatars' => false,
+ 'avatar_default_extension' => 'jpg',
+ ],
];
diff --git a/resources/icons/discord-text-white.svg b/resources/icons/discord-text-white.svg
new file mode 100644
index 0000000..2cef077
--- /dev/null
+++ b/resources/icons/discord-text-white.svg
@@ -0,0 +1,23 @@
+
diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php
index f13e919..b564e97 100644
--- a/resources/views/auth/login.blade.php
+++ b/resources/views/auth/login.blade.php
@@ -8,4 +8,16 @@