LoginController.php 2.1 KB

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