Auth.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace app\controller\mini;
  3. use app\extra\basic\Base;
  4. use app\extra\douyin\Crypt;
  5. use app\extra\tools\CodeExtend;
  6. use app\model\saas\SaasMember;
  7. use app\model\saas\SaasOrderLife;
  8. use LinFly\Annotation\Route\Controller;
  9. use LinFly\Annotation\Route\Route;
  10. use support\Request;
  11. use support\Response;
  12. use Shopwwi\WebmanAuth\Auth as AuthMode;
  13. #[Controller(prefix: "/api/dy/home")]
  14. class Auth extends Base
  15. {
  16. #[Route(path: "license",methods: "post")]
  17. public function getLicense(): Response
  18. {
  19. try {
  20. return success("ok",[
  21. "img" => "https://hx-mini.jsshuita.com.cn/license.jpg"
  22. ]);
  23. } catch (\Throwable $throwable) {
  24. return error($throwable->getMessage());
  25. }
  26. }
  27. /**
  28. * @param Request $request
  29. * @return Response
  30. */
  31. #[Route(path: "login",methods: "post")]
  32. public function setLogin(Request $request): Response
  33. {
  34. try {
  35. $param = $request->post();
  36. $sessionKey = (new Crypt)->config($this->getDyConfig())->getSessionKey($param['code']);
  37. print_r($sessionKey);
  38. if (!isset($sessionKey['openid'])) return error("获取数据失败");
  39. $openId = $sessionKey['openid'];
  40. $userIn = [
  41. 'open_id' => $openId,
  42. "create_ip" => $request->getRealIp(),
  43. "nickname" => "用户_".strtoupper(CodeExtend::random(3,5)),
  44. "avatar" => "https://img.inmei.cc/logo.png"
  45. ];
  46. $user = (new SaasMember)->where("open_id",$openId)->findOrEmpty();
  47. $userIn['id'] = $user['id'];
  48. if ($user->isEmpty()) {
  49. $userIn['id'] = $user->insertGetId($userIn);
  50. }
  51. return successTrans("success.data",[
  52. "user" => get_object_vars((new AuthMode)->guard("member")->login($userIn)),
  53. "coupon" => (new SaasOrderLife)->where("open_id",$openId)->where("status",1)->select()
  54. ]);
  55. } catch (\Throwable $throwable) {
  56. echo getDateFull()."==授权登陆===".$throwable->getMessage()."\n";
  57. echo getDateFull()."==授权登陆===".$throwable->getFile()."\n";
  58. echo getDateFull()."==授权登陆===".$throwable->getLine()."\n";
  59. return error($throwable->getMessage());
  60. }
  61. }
  62. protected function decrypt2code($private_key, $ciphertext_str) {
  63. // 解码 base64 密文
  64. $ciphertext = base64_decode($ciphertext_str);
  65. // 使用私钥解密
  66. openssl_private_decrypt($ciphertext, $plaintext, $private_key, OPENSSL_PKCS1_PADDING);
  67. if ($plaintext === false) {
  68. return [];
  69. }
  70. return json_decode($plaintext,true);
  71. }
  72. protected function decrypt($encrypted_data, $session_key, $iv) {
  73. $data = base64_decode($encrypted_data);
  74. $key = base64_decode($session_key);
  75. $iv_decoded = base64_decode($iv);
  76. // 使用 AES-256-CBC 模式解密
  77. return openssl_decrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv_decoded);
  78. }
  79. }