У меня есть класс промежуточного программного обеспечения из другого приложения laravel в 5.0, он будет вызываться при входе пользователя в систему, я хочу использовать в другом приложении в 5.2, вот класс.

<?php namespace App\Http\Middleware;

use Closure;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Contracts\Routing\Middleware;
use Illuminate\Contracts\Routing\ResponseFactory;

use App\AssignedRoles;

class Admin implements Middleware {

    /**
     * The Guard implementation.
     *
     * @var Guard
     */
    protected $auth;

    /**
     * The response factory implementation.
     *
     * @var ResponseFactory
     */
    protected $response;

    /**
     * Create a new filter instance.
     *
     * @param  Guard  $auth
     * @param  ResponseFactory  $response
     * @return void
     */
    public function __construct(Guard $auth,
                                ResponseFactory $response)
    {
        $this->auth = $auth;
        $this->response = $response;
    }
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ($this->auth->check())
        {
            $admin = 0;
            $user_roles = AssignedRoles::join('roles','role_user.role_id','=','roles.id')
            ->where('user_id', $this->auth->user()->id)->select('roles.is_admin')->get();
            foreach($user_roles as $item)
            {
                if($item->is_admin==1)
                {
                    $admin=1;
                }
            }
            if($admin==0){
                return $this->response->redirectTo('/');
            }
            return $next($request);
        }
        return $this->response->redirectTo('/');
    }

}

Я уже добавлен в kernel.php

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\Admin::class,   
    'age' => \App\Http\Middleware\Age::class,       
];

Я нахожу подсказки приложения в 5.0, как оно вызывает промежуточное ПО, но до сих пор понятия не имею, вот маршрут:

Route::get('/', 'HomeController@index');
Route::get('home', 'HomeController@index');
Route::get('about', 'PagesController@about');
Route::get('contact', 'PagesController@contact');

Route::pattern('id', '[0-9]+');
Route::get('news/{id}', 'ArticlesController@show');
Route::get('video/{id}', 'VideoController@show');
Route::get('photo/{id}', 'PhotoController@show');

Route::controllers([
    'auth' => 'Auth\AuthController',
    'password' => 'Auth\PasswordController',
]);

if (Request::is('admin/*'))
{
    require __DIR__.'/admin_routes.php';
}

Но как я могу запускать его каждый раз при входе в систему?

0
hkguile 11 Май 2016 в 09:10

2 ответа

Лучший ответ

Попробуй это:

Route::group(['middleware' => 'your-middleware'], function () {
    Route::post('/login', 'SiteController@login');
});

Видите, если это поможет.

1
Gaurav Dave 11 Май 2016 в 06:28

Попробуй это

Route::get('page', ['middleware' => 'auth', urController@action]);
0
D Coder 11 Май 2016 в 06:36