LaravelPackages.net
Acme Inc.
Toggle sidebar
humweb/sociable

Socialite authentication and persistence layer implementation.

19.342
0
2.1
About humweb/sociable

humweb/sociable is a Laravel package for socialite authentication and persistence layer implementation.. It currently has 0 GitHub stars and 19.342 downloads on Packagist (latest version 2.1). Install it with composer require humweb/sociable. Discover more Laravel packages by humweb or browse all Laravel packages to compare alternatives.

Last updated

Sociable

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

Socialite authentication and persistence layer implementation.

Install

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;
}

Getting started

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.');
    }

}
Example message for your login page to remove session info

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

Change log

Please see CHANGELOG for more information what has changed recently.

Testing

$ phpunit

Security

If you discover any security related issues, please email :author_email instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

Comments