Laravel - 如何使用 Laravel resful api 通过电子邮件或电话登录

时间:2021-05-14 22:08:10

标签: laravel

在我的 Laravel-8 restful API 应用程序中,我使用的是 Laravel Passport。

我的请求规则中有此代码:

public function rules()
{
    return [
    'emailOrPhone' => 'required|string',
    'password' => 'required|string',
    'remember_me' => 'boolean'
    ];
}

控制器:

public function login(LoginRequest $request)
{
    try{
        $userCred = User::where('email', $request->emailOrPhone)
        ->orWhere('mobile_number', $request->emailOrPhone)
        ->first();
        $credentials = request(['email', 'password']);
        $credentials['active'] = 1;
        $credentials['deleted_at'] = null;
        if(!Auth::attempt($credentials))
            return response()->json([
                'message' => 'Unauthorized'
            ], 401);
        $user = $request->user();
        $tokenResult = $user->createToken('iDriver');
        $token = $tokenResult->token;
        if ($request->remember_me)
            $token->expires_at = Carbon::now()->addWeeks(1);
        $token->save();
        return response()->json([
            'access_token' => $tokenResult->accessToken,
            'token_type' => 'Bearer',
            'expires_at' => Carbon::parse($tokenResult->token->expires_at)->toDateTimeString()
        ]);
    }catch(\Exception $e) {
        return $this->error($e->getMessage(), $e->getCode());
    }
}

如何重写控制器代码,以便用户可以使用电子邮件或手机号码登录?

谢谢

0 个答案:

没有答案