如何使用除使用多认证护照Api的用户以外的模型登录?

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

我正在使用sfelix-martins / passport-multiauth。我有三种模型:Users,Drivers和place_admins:守卫:

'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],


        'api' => [
            'driver' => 'passport',
            'provider' => 'users',
        ],

        'place_admin' => [
            'driver' => 'passport',
            'provider' => 'place_admins',
        ],
        'drivers' => [
            'driver' => 'passport',
            'provider' => 'drivers',
        ],
    ],

提供者

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


        'place_admin' => [
            'driver' => 'eloquent',
            'model' => App\Place_Admin::class,
        ],

        'drivers' => [
            'driver' => 'eloquent',
            'model' => App\Driver::class,
        ],

**登录**这是我用于用户的登录代码。如何将其更改为使用与驱动程序或place_admin相同的凭据登录,并在登录后生成api令牌:

public function login(Request $request)
    {
        $status = 401;
        $response = ['error' => 'Unauthorised'];
        if (Auth::attempt($request->only(['phone', 'password']))) {
            $status = 200;
            $response = [
                'user' => Auth::user(),
                'token' => Auth::user()->createToken('userToken')->accessToken,
            ];
        }
        if (!Auth::attempt($request->only(['phone', 'password'])))
            return response()->json([
                'message' => 'Unauthorized'
            ], 401);
        return response()->json($response, $status);
    }
php laravel laravel-passport
1个回答
0
投票

尝试一下

public function login(Request $request)
{
    $input = get_api_key($request);
    $rules = array(
        'email' => "required|email|regex:/^.+@.+$/i",
        'password' => "required",
    );
    $validator = Validator::make($input, $rules);
    if ($validator->fails()) {
        $arr = array("status" => 400, "message" => $validator->errors()->first(), "data" => array());
    } else {
        try {

            if (Auth::attempt(['email' => request('email'), 'password' => request('password')])) {
                 $token = $user->createToken('MyApp')->accessToken;
                        $arr = array("status" => 200, "message" => "Success", "data" => $token);
                    }

                else {
                    $arr = array("status" => 401, "message" => "Unauthorised", "data" => (object)array());
                }

        } catch (\Exception $ex) {
            if (isset($ex->errorInfo[2])) {
                $msg = $ex->errorInfo[2];
            } else {
                $msg = $ex->getMessage();
            }
            $arr = array("status" => 400, "message" => $msg, "data" => array());
        }
    }
    return \Response::json($arr);
}
© www.soinside.com 2019 - 2024. All rights reserved.