email or phone
모델 사용자에서이 방법을 사용 하여 로그인해야한다는 생각 :
public function findForPassport($identifier)
{
return $this->where('email', $identifier)->orWhere('phone', $identifier)->first();
}
하지만 로그인하면 오류가 표시됩니다!
내 컨트롤러 코드 :
public function login(Request $request)
{
$request->validate([
'email' => 'required|string|email',
'password' => 'required|string',
'remember_me' => 'boolean'
]);
$credentials = request(['email', 'password']);
if(!Auth::attempt($credentials))
return response()->json([
'message' => 'Unauthorized'
], 401);
$user = $request->user();
$tokenResult = $user->createToken('Personal Access Token');
$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()
]);
}
문제 $credentials
가 있음을 알고 있지만 이메일 또는 전화 번호로 만드는 방법을 모르겠습니다.
어떤 도움 pls?
이 시도:
public function login(Request $request)
{
$user = User::where('email', $request->emailOrPhone)
->orWhere('phone', $request->emailOrPhone)
->first();
if($user){
if (Hash::check($request->password, $user->password)) {
$tokenResult = $user->createToken('Personal Access Token');
$token = $tokenResult->token;
if ($request->remember_me)
$token->expires_at = Carbon::now()->addWeeks(1);
$token->save();
return response()->json([
'access_token' => $tokenResult->accessToken,
'expires_at' => Carbon::parse(
$tokenResult->token->expires_at
)->toDateTimeString()
]);
} else {
$response = ['Password incorrect'];
return response($response, 422);
}
}else {
$response = ['User doesn\'t exist'];
return response($response, 422);
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다