AuthController.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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 Faker\Provider\Image;
  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. return $this->ok([
  58. "id" => 1,
  59. "token" => "token",
  60. "name" => "用户名称",
  61. "avatar" => Image::imageUrl(),
  62. "company" => [
  63. "id" => 1,
  64. "name" => "公司名称",
  65. ],
  66. ]);
  67. }
  68. }