我正在使用 JWT 为我的应用程序创建一个 API。它适用于不同的桌子而不是users桌子。如何使用另一个表验证登录用户的身份students并创建 jwt 令牌。
对于User table正在工作的用户认证功能,其如下:
$credentials = $request->only(['email', 'password']);
try {
$token = Auth::guard()->attempt($credentials);
if(!$token) {
return response()->json([
'message' => "Email and password do not match",
'status_code' => 204,
]);
}
$user = Auth::user();
if($user->status == "Inactive") {
return response()->json([
'message' => "User ID is disabled",
'status_code' => 403,
]);
}
$user->last_login = Carbon::now();
$user->save();
$user = Auth::user();
$user->UserDeviceData()->firstOrCreate([
'device_id' => $request->device_id,
'device_type' => $request->device_type ? $request->device_type : "ios",
]);
return (new UserTransformer)->transform($user,[
'request_type' => 'login',
'token' => $token
]);
} catch (JWTException $e) {
return response()->json([
'message' => "Internal server error",
'status_code' => 500,
]);
}
这是 OTP 验证功能,其代码如下所示:
public function verify(Request $request)
{
try
{
$token = config('app.TWILIO_AUTH_TOKEN');
$twilio_sid = config('app.TWILIO_SID');
$twilio_verify_sid = config('app.TWILIO_VERIFY_SID');
$twilio = new Client($twilio_sid, $token);
$phoneNumber = $request->get('phone_number');
$verification = $twilio->verify->v2->services($twilio_verify_sid)->verificationChecks->create($request->get('verification_code'), array('to' => $request->get('phone_number')));
if ($verification->valid) {
// Updating table student table that the number is verified & want to return JWT token for authenticate user
return response()->json([
"status_code" => 200,
"message" => "Phone number verified."
]);
}
return response()->json([
"status_code" => 200,
"message" => "Verification failed."
]);
}catch (Exception $e){
return response()->json([
'response' => [
'code' => 401,
'message' => "Unable to verify OTP.Please try again.",
],
]);
}
}
如何验证另一个表上的已验证用户。