LoginController.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace App\Http\ApiControllers;
  3. use Firebase\JWT\JWT;
  4. use Illuminate\Foundation\Auth\User;
  5. use Illuminate\Http\JsonResponse;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Hash;
  8. class LoginController
  9. {
  10. /**
  11. * JWT登录
  12. *
  13. * @param Request $request
  14. * @return JsonResponse
  15. */
  16. public function login(Request $request):JsonResponse
  17. {
  18. $userName = $request->get('username','');
  19. $password = $request->get('password','');
  20. $user = User::query()->where("name",$userName)->first();
  21. $response = [
  22. 'message' => '请求成功',
  23. 'status_code' => 200,
  24. ];
  25. //验证用户登录
  26. if (!$user || !Hash::check(base64_encode($password),$user->password)){
  27. $response["message"] = "用户名或密码错误";
  28. $response["status_code"] = 401;
  29. return response()->json($response);
  30. }
  31. //获取公私钥
  32. try {
  33. $privateKey = file_get_contents(base_path().'/private.pem');
  34. //$publicKey = file_get_contents(base_path().'/public.pem');
  35. }catch (\Exception $e){
  36. $response["status_code"] = 410;
  37. if (strpos($e->getMessage(),"No such file or directory")!==false)$response["message"] = "服务器异常,资源丢失";
  38. else $response["message"] = "访问某些资源失败";
  39. return response()->json($response);
  40. }
  41. try {
  42. $response["data"] = ["token"=>app("UserService")->getJWTToken($user,$privateKey)];
  43. return response()->json($response);
  44. }catch (\Exception $e){
  45. $response["status_code"] = 409;
  46. $response["message"] = "资源异常,无法反馈";
  47. return response()->json($response);
  48. }
  49. }
  50. }