Authentication

Waterhole uses Laravel's Authentication system, and supports adding OAuth authentication providers via Laravel Socialite.

OAuth

Waterhole supports OAuth authentication via Laravel Socialite, which includes support for Facebook, Twitter, LinkedIn, Google, GitHub, GitLab, and Bitbucket.

The Socialite Providers organization contains many more providers that you can use as well. And, if you require a provider not on the list, you can create your own.

Configuring OAuth

Install Socialite with the following Composer command:

composer require laravel/socialite

You can configure OAuth behavior in config/waterhole/auth.php. Add the OAuth providers you want to support to the oauth_providers array. Waterhole will show buttons for these providers on the login and registration pages:

'oauth_providers' => [
    'google',
    'github',
],

Add your provider credentials to config/services.php, and set the redirect option to oauth/{provider}/callback:

'github' => [
    'client_id' => env('GITHUB_CLIENT_ID'),
    'client_secret' => env('GITHUB_CLIENT_SECRET'),
    'redirect' => 'oauth/github/callback',
],

Button Customization

Waterhole includes styles for the default providers supported by Socialite, but if you wish to change them, or for any additional providers, you can customize the icon and name displayed on a provider's button by providing a configuration array:

'oauth_providers' => [
    'google',
    'github' => [
        'icon' => 'tabler-brand-github',
        'name' => 'GitHub',
    ],
],

To style a provider button, target it using the .oauth-button[data-provider] selector:

.oauth-button[data-provider='github'] {
    background: black;
    color: white;
}

Disabling Passwords

If you would like to only allow registering and logging in via an OAuth provider, you can disable passwords by setting the password_enabled setting to false in config/waterhole/auth.php.