Git Product home page Git Product logo

reauthenticate's Introduction

Reauthenticate

Because sometimes, you want that extra layer of security

Software License Build Status Scrutinizer Code Quality codecov.io StyleCI

Reauthenticate users by letting them re-enter their passwords for specific parts of your app (for Laravel 5).

Route::group(['middleware' => ['auth','reauthenticate']], function () {

    Route::get('user/payment', function () {
        // Needs to re-enter password to see this
    });

});

Contents

Installation

In order to add reauthenticate to your project, just add

"mpociot/reauthenticate": "~1.0"

to your composer.json. Then run composer install or composer update.

Or run composer require mpociot/reauthenticate if you prefer that.

Usage

Add the middleware to your Kernel

In your app\Http\Kernel.php file, add the reauthenticate middleware to the $routeMiddleware array.

protected $routeMiddleware = [
    // ...
    'reauthenticate'         => \Mpociot\Reauthenticate\Middleware\Reauthenticate::class,
    // ...
];

Add the routes & views

By default, reauthanticate is looking for a route auth/reauthenticate and a view auth.reauthenticate that will hold a password field.

An example view can be copied from here. Please note that this file needs to be manually copied, because I didn't want to bloat this package with a service provider.

The HTTP controller methods can be used from the Reauthenticates trait, so your AuthController looks like this:

<?php

namespace App\Http\Controllers\Auth;

use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Mpociot\Reauthenticate\Reauthenticates;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;

class AuthController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Registration & Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users, as well as the
    | authentication of existing users. By default, this controller uses
    | a simple trait to add these behaviors. Why don't you explore it?
    |
    */

    use AuthenticatesAndRegistersUsers, ThrottlesLogins, Reauthenticates {
        AuthenticatesAndRegistersUsers::getFailedLoginMessage insteadof Reauthenticates;
    }

Be sure to except the reauthenticate routes from the guest middleware.

    /**
     * Create a new authentication controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest', ['except' => ['logout','getReauthenticate','postReauthenticate'] ]);
    }

To get started, add these routes to your routes.php file:

// Reauthentication routes
Route::get('auth/reauthenticate', 'Auth\AuthController@getReauthenticate');
Route::post('auth/reauthenticate', 'Auth\AuthController@postReauthenticate');

That's it. Once the user successfully reauthenticates, the valid login will be stored for 30 minutes.

The URL the user gets redirected to can be configured by adding a reauthenticate_url key to your config/app.php file:

return [
    // ...

    'reauthenticate_url' => '/custom-url',
];

License

Reauthenticate is free software distributed under the terms of the MIT license.

reauthenticate's People

Contributors

crynobone avatar dbohn avatar jbrooksuk avatar mpociot avatar svenluijten avatar vinkla avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

reauthenticate's Issues

Update readme regarding AuthController guest middleware assignment

First thanks very much for this great piece of middleware :-)

I suggest to add to the description, that one obviously has to except the trait methods from the "guest" middleware in the AuthController constructor, otherwise it wont work:

    public function __construct()
    {
        $this->middleware('guest', ['except' => ['getLogout', 'postReauthenticate', 'getReauthenticate']]);
    }

Andreas

Trait method getFailedLoginMessage has not been applied

Hello,

when using Reauthenticate, I receive the following error message:

FatalErrorException in AuthController.php line 116: Trait method getFailedLoginMessage has not been applied, because there are collisions with other trait methods on App\Http\Controllers\Auth\AuthController

Line 116 is the last line of the AuthController.

If I comment out the getFailedLoginMessage method in \Mpociot\Reauthenticate\Reauthenticates.php everything works like designed.

My AuthController.php is "naked" as it is shipped with Laravel 5.2 except the changes necessary to use this middleware and to update the password (two methods I have added but no traits). The traits which are used are

use AuthenticatesAndRegistersUsers, ThrottlesLogins, Reauthenticates;

Regards
Andreas

Enhancement - Show Popup for password field

I want to know if it's possible to just show a popup password field without taking the user out of the current view. This would really be good for user experience when the user is currently somewhere in the middle of your application.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.