Установить конкретное промежуточное ПО в laravel - PullRequest
0 голосов
/ 06 февраля 2019

Я работаю над приложением 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');
    }

}

однако я еще не реализовал опцию выбора роли, но в контроллере входа в систему я хочу вызвать попытку () для определенного промежуточного программного обеспечения.

1 Ответ

0 голосов
/ 06 февраля 2019

вы можете попробовать с определенной охраной, как это:

Auth::guard('admin')->attempt($adminInfo, $request->get('remember'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...