Logowanie przez Social Media

  • routy:
    /routes/vendor/icore/auth.php
    /routes/vendor/icore/web/profile.php
  • kontrolery:
    N1ebieski\ICore\Http\Controllers\Auth\SocialiteController
    N1ebieski\ICore\Http\Controllers\Web\Profile\SocialiteController
  • model:
    N1ebieski\ICore\Models\Socialite
  • widoki:
    /resources/views/vendor/icore/web/profile
  • pliki językowe:
    /resources/lang/vendor/icore/pl/profile.php
    /resources/lang/vendor/icore/en/profile.php


# Opis

iCore udostępnia użytkownikom możliwość logowania lub rejestracji za pomocą serwisów typu Social Media - domyślnie Facebook i Twitter. W przypadku istniejącego konta użytkownika możliwe jest po zalogowaniu powiązanie go z Social Media z poziomu swojego profilu na stronie. Z poziomu profilu użytkownik ma również możliwość usunięcia powiązania.

# Konfiguracja

Z poziomu pliku .env w głównym folderze z aplikacją. Dla Facebook:

FACEBOOK_CLIENT_ID=
FACEBOOK_CLIENT_SECRET=

Odpowiednie klucze należy wygenerować w swoim koncie na stronie Facebook for Developers.

Dla Twitter:

TWITTER_CLIENT_ID=
TWITTER_CLIENT_SECRET=

Odpowiednie klucze należy wygenerować w swoim koncie na stronie Twitter for Developers.

Request logowania/rejestracji użytkowników przez Social Media musi być wysłany z poziomu strony z prawidłowo zweryfikowanym certyfikatem SSL (aplikacja musi działać na adresie z protokołem https).

W przypadku gdy konto użytkownika nie udostępnia adresu e-mail, rejestracja się nie powiedzie. Użytkownik zostanie przekierowany na podstronę pełnej rejestracji ze stosownym komunikatem.

W kwestiach nie omówionych wyżej zastosowanie ma dokumentacja Laravel Socialite.

# Wyłączenie możliwości logowania przez Social Media

Dla logowania/rejestracji nowych użytkowników należy usunąć lub zakomentować odpowiednie routy w pliku /routes/vendor/icore/auth.php:

Route::get('login/{provider}', [SocialiteController::class, 'redirect'])
    ->middleware('icore.guest')
    ->name('auth.socialite.redirect');
Route::get('login/{provider}/callback', [SocialiteController::class, 'callback'])
    ->middleware('icore.guest')
    ->name('auth.socialite.callback');

Dla tworzenia powiązań istniejących użytkowników należy usunąć lub zakomentować odpowiednie routy w pliku /routes/vendor/icore/web/profile.php: 

    Route::get('profile/socialites', [ProfileController::class, 'socialites'])
        ->name('profile.socialites');

    Route::get('symlink/{provider}', [SocialiteController::class, 'redirect'])
        ->name('profile.socialite.redirect')
        ->where('provider', '[A-Za-z]+');
    Route::get('symlink/{provider}/callback', [SocialiteController::class, 'callback'])
        ->name('profile.socialite.callback')
        ->where('provider', '[A-Za-z]+');

    Route::delete('symlink/socialites/{socialite}', [SocialiteController::class, 'destroy'])
        ->name('profile.socialite.destroy')
        ->middleware('can:delete,socialite')
        ->where('socialite', '[0-9]+');