LoginController.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. }catch (\Exception $e){
  35. $response["status_code"] = 410;
  36. if (strpos($e->getMessage(),"No such file or directory")!==false)$response["message"] = "服务器异常,资源丢失";
  37. else $response["message"] = "访问某些资源失败";
  38. return response()->json($response);
  39. }
  40. try {
  41. $response["data"] = ["token"=>app("UserService")->getJWTToken($user,$privateKey)];
  42. return response()->json($response);
  43. }catch (\Exception $e){
  44. $response["status_code"] = 409;
  45. $response["message"] = "资源异常,无法反馈";
  46. return response()->json($response);
  47. }
  48. }
  49. }