TokenController.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: qiuzijian
  5. * Date: 4/1/22
  6. * Time: 6:29 PM
  7. */
  8. namespace Modules\Admin\Http\Controllers\Api;
  9. use App\Enum\ApiEnum;
  10. use App\Http\Controllers\Controller;
  11. use Illuminate\Http\Request;
  12. use Modules\Admin\Entities\User;
  13. use Modules\Admin\Http\Requests\TokenRequest;
  14. use Modules\Staff\Entities\Staff;
  15. use Symfony\Component\HttpFoundation\Response;
  16. class TokenController extends Controller
  17. {
  18. public function token(Request $request)
  19. {
  20. $result['status'] = true;
  21. $result['msg'] = ApiEnum::RETURN_SUCCESS;
  22. $result['data'] = [];
  23. $username = $request->input('username');
  24. $user = \App\User::where('staff_num', $username)->first();
  25. if (!$user) {
  26. return $this->error(1001, '用户不存在');
  27. }
  28. $result = $this->issueToken($request, 'password');
  29. if ($result->getStatusCode() == 401) {
  30. return $this->error(1002, '密码错误');
  31. }
  32. $data = json_decode($result->getContent(), true);
  33. $result = [
  34. 'code' => 0,
  35. 'message' => 'SUCCESS',
  36. 'data' => $data
  37. ];
  38. return response()->json($result);
  39. }
  40. protected function error($code = 1, $msg = '')
  41. {
  42. return [
  43. 'code' => $code,
  44. 'message' => $msg,
  45. ];
  46. }
  47. /**
  48. * Passport 接口请求
  49. * @param Request $request
  50. * @param $grant_type
  51. * @param string $provider
  52. * @param string $scope
  53. * @return Response
  54. */
  55. protected function issueToken(Request $request, $grant_type, $provider = 'users', $scope = '*'): Response
  56. {
  57. $client = config('passport.password');
  58. if($request->password != 'Zhks123456+'){
  59. $request->password = base64_decode($request->password);
  60. }
  61. $params = [
  62. 'grant_type' => $grant_type,
  63. 'client_id' => $client['client_id'],
  64. 'client_secret' => $client['client_secret'],
  65. 'username' => $request->username ?: $request->email,
  66. 'password' => $request->password,
  67. 'provider' => $provider,
  68. 'scope' => $scope,
  69. ];
  70. $proxy = $request::create('oauth/token', 'POST');
  71. $proxy->request->add($params);
  72. return app()->handle($proxy);
  73. }
  74. }