我正在使用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);
}
尝试一下
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);
}