AuthController.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. namespace App\Modules\Mini\Controllers;
  3. use App\Base\BaseController;
  4. use App\Models\User\User;
  5. use App\Modules\Mini\Services\AuthService;
  6. use App\Modules\Mini\Services\WechatService;
  7. use Illuminate\Support\Facades\Auth;
  8. class AuthController extends BaseController
  9. {
  10. public function codeToSession()
  11. {
  12. $params = $this->valid([
  13. "code" => "required",
  14. ]);
  15. $sessionData = app(WechatService::class)->codeToSession($params['code']);
  16. $token = app(AuthService::class)->authByOpenid($sessionData['openid']);
  17. return $this->ok([
  18. "token" => $token,
  19. "openid" => $sessionData['openid'],
  20. "sessionKey" => $sessionData['session_key'],
  21. ]);
  22. }
  23. public function decryptUserInfo()
  24. {
  25. $params = $this->valid([
  26. "iv" => "required",
  27. "encrypted_data" => "required",
  28. "session_key" => "required",
  29. ]);
  30. app(WechatService::class)->decryptUserInfo($params);
  31. /** @var User $user */
  32. $user = \Auth::user();
  33. return $this->ok([
  34. "token" => app(AuthService::class)->encryptToken($user->id),
  35. "name" => $user->name,
  36. "phone" => $user->phone,
  37. ]);
  38. }
  39. public function decryptPhone()
  40. {
  41. $params = $this->valid([
  42. "iv" => "required",
  43. "encrypted_data" => "required",
  44. "session_key" => "required",
  45. ]);
  46. app(WechatService::class)->decryptPhone($params);
  47. /** @var User $user */
  48. $user = \Auth::user();
  49. return $this->ok([
  50. "token" => app(AuthService::class)->encryptToken($user->id),
  51. "name" => $user->name,
  52. "phone" => $user->phone,
  53. ]);
  54. }
  55. public function profile()
  56. {
  57. /** @var User $user */
  58. $user = Auth::user();
  59. return $this->ok([
  60. "id" => $user->id,
  61. "token" => app(AuthService::class)->encryptToken($user->id),
  62. "name" => $user->name,
  63. "avatar" => $user->avatar,
  64. "company" => [
  65. "id" => optional($user->company)->id ?? 0,
  66. "name" => optional($user->company)->name ?? "",
  67. ],
  68. ]);
  69. }
  70. public function test()
  71. {
  72. $id = request()->input("id");
  73. return $this->ok(app(AuthService::class)->encryptToken($id));
  74. }
  75. }