2017 © Pedro Peláez
 

library confirmable-trait

A simple trait to add the ability to confirm something

image

tyler36/confirmable-trait

A simple trait to add the ability to confirm something

  • Tuesday, June 19, 2018
  • by tyler36
  • Repository
  • 1 Watchers
  • 0 Stars
  • 7 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

Introduction

This package is designed to simplify confirming a model (eg. User). - Users generate a confirmation model and are emailed the token. - To confirm, a user must enter their email and the confirmation token sent with a set time limit - Users can request a new confirmation token., (*1)

Installation

  • Install package
composer require tyler36/confirmable-trait
  • Publish the assets via command line
php artisan vendor:publish --provider=Tyler36\ConfirmableTrait\ConfirmableServiceProvider
  • Add trait to User model In your User model, add the following line
// App\User.php
use Tyler36\ConfirmableTrait\Confirmable;

Class User extends Model
...
    use Confirmable;
  • Run the migrations Update the User table by running the published migrations
php artisan migrate
  • Register the event
// App\Providers\EventServiceProvider.php
...
    protected $listen = [
        UserRequestedConfirmationEmail::class => [
            SendConfirmationEmail::class
        ]
    ];
  • Update views Update the view in ConfirmUserController.php to point to the view page
// App\Http\Controllers\Auth\ConfirmUserController.php
...
    public function edit()
    {
        return view('auth.confirmation');
    }

You can either redirect all authenticated, unconfirmed users view applying the middleware or adding a simple link to the view. I like to add a notification to the profile page., (*2)

// view/user/show.blade.php
...
    @if($user->isNotConfirmed())
        @include('common.confirmation_required')
    @endif
// view/forms/confirmation.blade.php
...


@csrf() {{-- FORM: Email --}} {{-- FORM: Token --}}
{{-- FORM: Acceptance --}}
{{-- FORM: Submit --}}

- Apply middleware This package comes with 2 middleware for protecting route. ### isConfirmed This middleware only allows confirmed members. IE. A member is currently logged in AND marked as confirmed. To register the middleware, update ```App\Http\Kernel.php``` as followed:
// App\Http\Kernel.php ... protected $routeMiddleware = [ ... 'auth.confirmed' => \Tyler36\ConfirmableTrait\Middleware\isConfirmed::class, ]
Of-course, you can change the middleware name ('auth.confirmed') to anything you.

### isNotConfirmed
This middleware only allows unconfirmed members. IE. A member is currently logged in AND is NOT confirmed.
To register the middleware, update ```App\Http\Kernel.php``` as followed:
// App\Http\Kernel.php ... protected $routeMiddleware = [ ... 'auth.notconfirmed' => \Tyler36\ConfirmableTrait\Middleware\isNotConfirmed::class, ]



## Models ### User model After adding this trait to the User model, several new functions are available: - To check if the User has been confirmed (returns boolean).
$user->isConfirmed()
- To check if User is NOT confirmed (returns boolean).
$user->isNotConfirmed()
- To manual mark a user as confirmed
$user->markConfirmed()
- You can get the current confirmation model via a relationship
$user->confirmation

### Confirmation model This model holds a confirmation token and the email account associated with it. - You can get the user via a relationship
$confirmation->user

#### Validating tokens This packaged is designed to confirm users by checking a record matching an email & token exists. There are several layers to validation - Check a confirmation token exists for the authenticated User
$confirmation = Confirmation::firstOrFail(['email' => auth()->user()->email]);

- Validate a user supplied $token within the time limit
$confirmation->validateToken($token)
You can override the default 24 hour time period by updating the confirmation model
// Confirmation.php class Confirmation extends Model { ... protected $validForHours = 24;


## Factory Helpers 2 additional factory state helpers are available for your User models ### 'isConfirmed' User state This will generate a user that has been confirmed. IE. 'confirmed' => true
factory(App\User::class)->states('isConfirmed')->create();

### 'isNotConfirmed' User state This will generate a user that is NOT confirmed. IE. 'confirmed' => false
factory(App\User::class)->states('isNotConfirmed')->create();

## Translations After publishing the assets, you can override package translations through the vendor translation files. Note the double colon after the package name.
// In PHP files trans('confirmable::message.token.mismatch') // In blade files @lang('confirmable::message.token.mismatch')

The Versions

19/06 2018

dev-master

9999999-dev

A simple trait to add the ability to confirm something

  Sources   Download

The Requires

 

The Development Requires

19/06 2018

1.0.1

1.0.1.0

A simple trait to add the ability to confirm something

  Sources   Download

The Requires

 

The Development Requires

12/06 2018

1.0

1.0.0.0

A simple trait to add the ability to confirm something

  Sources   Download

The Development Requires