Voraussetzungen
Schritt 1: Installation von Laravel Socialite
composer require laravel/socialite
Schritt 2: Konfiguration
2.2 Environment-Datei
'providers' => [
// Andere Service-Provider
Laravel\Socialite\SocialiteServiceProvider::class,
],
'aliases' => [
// Andere Aliases
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
],
GITHUB_CLIENT_ID=dein-github-client-id
GITHUB_CLIENT_SECRET=dein-github-client-secret
GITHUB_REDIRECT_URI=https://deine-domain.com/auth/github/callback
Schritt 3: Hinzufügen der Socialite-Anbieter-Konfigurationen
return [
// Andere Service-Konfigurationen
'github' => [
'client_id' => env('GITHUB_CLIENT_ID'),
'client_secret' => env('GITHUB_CLIENT_SECRET'),
'redirect' => env('GITHUB_REDIRECT_URI'),
],
// Weitere Anbieter wie 'facebook', 'google' etc. können hier hinzugefügt werden
];
Schritt 4: Erstellen der Auth-Routen
use Laravel\Socialite\Facades\Socialite;
use App\Http\Controllers\Auth\SocialiteController;
Route::get('auth/github', [SocialiteController::class, 'redirectToProvider']);
Route::get('auth/github/callback', [SocialiteController::class, 'handleProviderCallback']);
Schritt 5: Erstellen des Socialite Controllers
php artisan make:controller Auth/SocialiteController
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Laravel\Socialite\Facades\Socialite;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class SocialiteController extends Controller
{
/**
* Redirect the user to the GitHub authentication page.
*
* @return \Illuminate\Http\Response
*/
public function redirectToProvider()
{
return Socialite::driver('github')->redirect();
}
/**
* Obtain the user information from GitHub.
*
* @return \Illuminate\Http\Response
*/
public function handleProviderCallback()
{
$githubUser = Socialite::driver('github')->stateless()->user();
$user = User::updateOrCreate(
[
'email' => $githubUser->getEmail(),
],
[
'name' => $githubUser->getName(),
'password' => Hash::make(str_random(24)), // Sicherstellen, dass ein Passwort gesetzt wird
'github_id' => $githubUser->getId(), // Hinzufügen falls du github_id Spalte in der Datenbank hast
]
);
Auth::login($user, true);
return redirect('/home');
}
}
Schritt 6: Migration anpassen
Bearbeite die Migration -
php artisan make:migration add_github_id_to_users_table --table=users
um die neue Spalte hinzuzufügen:
database/migrations/xxxx_xx_xx_xxxxxx_add_github_id_to_users_table.php
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('github_id')->nullable()->unique();
});
}
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('github_id');
});
}
php artisan migrate
Schritt 7: Frontend-Anpassungen
<a href="{{ url('auth/github') }}" class="btn btn-primary">Login with GitHub</a>
Kommentare 0
Noch keine Kommentare. Seien Sie der Erste!