Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads
Socialite authentication and persistence layer implementation.
Via Composer
$ composer require humweb/sociable
Add ServiceProvider
In the providers array add the service providers for this package.
Humweb\Sociable\ServiceProvider::class
Publish configuration in Laravel 5
$ php artisan vendor:publish --provider="Humweb\Sociable\ServiceProvider"Run database migration
$ php artisan migrate"Configure user auth driver and provider configs
<?php // config/sociable.php return [ // Builtin options: laravel, sentinel 'auth_provider' => 'laravel', // Optional provider list, mainly used to list login buttons. 'providers' => [ 'google', 'github', 'twitter' ] ];
Add Sociable trait to user model
class User extends Authenticatable { use Sociable; }
See Humweb\Sociable\Http\Controllers\AuthController.php for:
- OAuth login
- Link third-party service to a user account
<?php class AuthController extends Controller { /** * Login */ public function getLogin(Request $request) { // Remove social data from session upon request if ($request->exists('forget_social')) { $request->session()->forget('social_link'); } return view('login'); } public function postLogin(Request $request) { // Gather credentials $credentials = [ 'username' => $request->get('username'), 'password' => $request->get('password'), ]; if ($user = \Auth::attempt($credentials, $remember)) { // Check for social data in session if ($request->session()->has('social_link')) { // Grab data from session $social = $request->session()->get('social_link'); $user->attachProvider($social['provider'], $social); // Remove link data $request->session()->forget('social_link'); return redirect() ->intended('/') ->with('success', 'Account connected to "'.$social['provider'].'" successfully.'); } return redirect()->intended('/'); } // Default error message return back() ->withInput() ->withErrors('Invalid login or password.'); } }
This can help if the user did not want to auto link the accounts after login.
@if (session()->has('social_link'))
<div class="alert alert-info">
Login to link your "{{ session('social_link.provider') }}" and "<Your Site>" accounts. <br>
If this is not what you want <a href="/login?forget_social">click here</a> to refresh.
</div>
@endif
Please see CHANGELOG for more information what has changed recently.
$ phpunit
If you discover any security related issues, please email :author_email instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.