Search code examples
authenticationlaravel-5role

Creating new user role in Laravel 5.2


I am trying to create a new role originating_point_user in Laravel 5.2, besides user and admin. For that I have created a directory called OriginatingPointAuth within which there are two files AuthController.php and PasswordController.php. Also modified the kernal.php as below :

protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'admin' => \App\Http\Middleware\RedirectIfNotAdmin::class,
        'origination_point_user' => \App\Http\Middleware\RedirectIfNotOriginationpointUser::class,
    ];

And auth.php as

'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

        'admins' => [
            'driver' => 'eloquent',
            'model' => App\Admin::class,
        ],
        'originating_point_users' => [
            'driver' => 'eloquent',
            'model' => App\OriginatingPointUser::class,
        ]
        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

but when I tried to visit a route using originating_point_user middleware, it shows

ReflectionException in Container.php line 734: Class originating_point_user does not exist

Route :

Route::group(['prefix'=>'originating-point-user'], function() {
    Route::group(['prefix'=>'loading-details'], function() {
        Route::get('/add', [
            'as' => 'opu.loading_details.create',
            'middleware' => ['originating_point_user'],
            'uses' => 'OrdersController@add_loading_details'
        ]);
    });
});

Also , it does not redirect to mentioned page defined in AuthController.php


Solution

  • In your kernel file you have registered your middleware as origination_point_user instead of originating_point_user . And when when calling the middleware you are calling with originating_point_user.

    protected $routeMiddleware = [
            'auth' => \App\Http\Middleware\Authenticate::class,
            'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
            'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
            'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
            'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
            'admin' => \App\Http\Middleware\RedirectIfNotAdmin::class,
     //change here originating_point_user
               'originating_point_user' => \App\Http\Middleware\RedirectIfNotOriginationpointUser::class,
        ];