坐落在laravel特定的中间件

问题描述 投票:0回答:1

我工作的一个Laravel应用,在此应用程序的每个用户可以拥有多个角色,也有在该应用12级的角色哪一个用户可以在一个时间其中至少有一个或者许多人,当用户想要什么,我想要的是登录我想告诉他/她的可用角色,他/她可以登录,他/她应该自己角色的选择上登录,我有一个中间件,每能为他设定角色/她的问题是,我不能设置一个特定的中间件用户同时登录。 中间件之一:

<?php

namespace App\Http\Middleware;

use Closure;

class CTDMiddleware {

    public function handle($request, Closure $next) {
        if (Auth::check()) {
            $role = Auth::user()->user_role[0]->role->role;
            if (strtolower($role) == \App\Classes\User_Groups::$ctd) {
                return $next($request);
            }
        }
        return redirect()->route('/logout');
    }

}

在这里,我只是检查用户的第一个角色,而她可以有更多的角色。登录控制器:

    <?php

namespace App\Http\Controllers\Auth;

use Illuminate\Support\Facades\Hash;
use Illuminate\Http\Request;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller {
use AuthenticatesUsers;

    protected $redirectTo = '/home';

    public function login(Request $request) {
        $validator = Validator::make(
                        array(
                    'email' => $request->email,
                    'password' => $request->password
                        ), array(
                    'email' => 'required | email',
                    'password' => 'required',
                        )
        );
        if ($validator->fails()) {
            return redirect('admin/login')->withErrors($validator)->withInput();
        } else {
            $adminInfo = array("email" => $request->email, "password" => $request->password); 
            if (auth()->attempt($adminInfo)) {
                return redirect('/home');
            } else {
                return redirect('/login')->with('errors', new \PhpParser\Error('Not Found', array('email', 'password')));
            }
        }
    }

    public function logout() {
        auth()->logout();
        return view('auth/login');
    }

}

然而,我没有实现的角色选择选项还,但在登录控制器我要打电话尝试()为特定的中间件。

laravel middleware laravel-middleware
1个回答
0
投票

你可以用这样一个特定的后卫试试:

Auth::guard('admin')->attempt($adminInfo, $request->get('remember'))
© www.soinside.com 2019 - 2024. All rights reserved.