TokenController.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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 Illuminate\Support\Facades\Input;
  13. use Modules\Admin\Entities\User;
  14. use Modules\Admin\Http\Requests\TokenRequest;
  15. use Modules\Staff\Entities\Staff;
  16. use Symfony\Component\HttpFoundation\Response;
  17. class TokenController extends Controller
  18. {
  19. public function token(Request $request)
  20. {
  21. $result['status'] = true;
  22. $result['msg'] = ApiEnum::RETURN_SUCCESS;
  23. $result['data'] = [];
  24. $username = $request->input('username');
  25. $user = \App\User::where('staff_num', $username)->first();
  26. if (!$user) {
  27. return $this->error(1001, '用户不存在');
  28. }
  29. $result = $this->issueToken($request, 'password');
  30. if ($result->getStatusCode() == 401) {
  31. return $this->error(1002, '密码错误');
  32. }
  33. $data = json_decode($result->getContent(), true);
  34. $result = [
  35. 'code' => 0,
  36. 'message' => 'SUCCESS',
  37. 'data' => $data
  38. ];
  39. return response()->json($result);
  40. }
  41. protected function error($code = 1, $msg = '')
  42. {
  43. return [
  44. 'code' => $code,
  45. 'message' => $msg,
  46. ];
  47. }
  48. /**
  49. * Passport 接口请求
  50. * @param Request $request
  51. * @param $grant_type
  52. * @param string $provider
  53. * @param string $scope
  54. * @return Response
  55. */
  56. protected function issueToken(Request $request, $grant_type, $provider = 'users', $scope = '*'): Response
  57. {
  58. $client = config('passport.password');
  59. if($request->password != 'Zhks123456+'){
  60. $request->password = base64_decode($request->password);
  61. }
  62. $params = [
  63. 'grant_type' => $grant_type,
  64. 'client_id' => $client['client_id'],
  65. 'client_secret' => $client['client_secret'],
  66. 'username' => $request->username ?: $request->email,
  67. 'password' => $request->password,
  68. 'provider' => $provider,
  69. 'scope' => $scope,
  70. ];
  71. $proxy = $request::create('oauth/token', 'POST');
  72. $proxy->request->add($params);
  73. return app()->handle($proxy);
  74. }
  75. public function checkToken(Request $request){
  76. $ts = Input::get('ts', '');
  77. $loginid = Input::get('loginid', '');
  78. $token = Input::get('token', '');
  79. $salt = 'aqgltx@2022';
  80. $md5 = md5($loginid.'|'.$ts.'|'.$salt);
  81. if($md5 != $token){
  82. return self::errorResponse(ApiEnum::STATUS_CODE_FAIL);
  83. }
  84. }
  85. }