🔑 Laravel Authentication package with built-in two-factor (Authy) and social authentication (Socialite).

38
1
PHP

Awes.io logo

Authentication

Laravel Authentication package with built-in two-factor (Authy) and social authentication (Socialite).

Coverage report Last version Build status Downloads License CDN Ready laravel Last commit Analytics Hosted by Package Kit Patreon

Laravel Authentication

Table of Contents

Installation

Via Composer

$ composer require awes-io/auth

The package will automatically register itself.

You can publish migrations:

php artisan vendor:publish --provider="AwesIO\Auth\AuthServiceProvider" --tag="migrations"

After migrations have been published you can create required db tables by running:

php artisan migrate

Publish views:

php artisan vendor:publish --provider="AwesIO\Auth\AuthServiceProvider" --tag="views"

Configuration

Publish config file:

php artisan vendor:publish --provider="AwesIO\Auth\AuthServiceProvider" --tag="config"

You can disable additional features by commenting them out:

'enabled' => [
    'social', 
    // 'two_factor',
    // 'email_verification',
],

Add new socialite services:

'services' => [
    'github' => [
        'name' => 'GitHub'
    ],
    ...
],
'github' => [
    'client_id' => env('GITHUB_CLIENT_ID'),
    ...
],

And configure redirect paths:

'redirects' => [
    'login' => '/twofactor',
    'reset_password' => '/',
    ...
],

Social and two-factor authentication

Several .env variables required if additional modules were enabled in config:

# SOCIALITE GITHUB
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GITHUB_REDIRECT_URL=http://auth.test/login/github/callback

# TWO FACTOR AUTHY
AUTHY_SECRET=

If you enabled social and/or two factor authentication add respective traits to User model class:

use AwesIO\Auth\Models\Traits\HasSocialAuthentication;
use AwesIO\Auth\Models\Traits\HasTwoFactorAuthentication;

class User extends Authenticatable
{
    use HasSocialAuthentication, HasTwoFactorAuthentication;
}

Email verification & resetting passwords

To use email verification functionality and to reset passwords, add SendsEmailVerification and SendsPasswordReset traits:

use AwesIO\Auth\Models\Traits\SendsPasswordReset;
use AwesIO\Auth\Models\Traits\SendsEmailVerification;

class User extends Authenticatable
{
    use SendsEmailVerification, SendsPasswordReset;
}

Usage

Add to routes/web.php:

AwesAuth::routes();

You can disable registration:

AwesAuth::routes(['register' => false]);

Package will register several routes.

Besides default authentication routes, it will add:
  • Socialite routes
    • 'login.social'
    • 'login/{service}/callback'
  • Two factor authentication setup routes
    • 'twofactor.index'
    • 'twofactor.store'
    • 'twofactor.destroy'
    • 'twofactor.verify'
  • Two factor authentication login routes
    • 'login.twofactor.index'
    • 'login.twofactor.verify'
  • Email verification routes
    • 'verification.resend'
    • 'verification.code.verify'
    • 'verification.code'
    • 'verification.verify'

Testing

You can run the tests with:

composer test

Contributing

Please see contributing.md for details and a todolist.

Credits

License

MIT