LoginController.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Helpers\Jwt;
  4. use App\Http\Validator\MemberValidator;
  5. use App\Services\EmailService;
  6. use App\Services\RedisService;
  7. use App\Services\SmsService;
  8. /**
  9. * 授权登录控制器基类
  10. * Class LoginController
  11. * @package App\Http\Controllers
  12. */
  13. class LoginController extends webApp
  14. {
  15. /**
  16. * 用户登录
  17. * @return array
  18. */
  19. public function login(MemberValidator $validator){
  20. $code = request()->all();
  21. if(empty($code)){
  22. return message('code参数错误',false);
  23. }
  24. // 授权
  25. $openid = isset($this->userInfo['openid'])? $this->userInfo['openid'] : '';
  26. $status = isset($this->userInfo['status'])? $this->userInfo['status'] : '';
  27. $userId = isset($this->userInfo['id'])? $this->userInfo['id'] : 0;
  28. if(empty($this->userInfo) || empty($openid) || $userId<=0){
  29. return message('用户授权失败',false);
  30. }
  31. if($status != 1){
  32. return message('用户账户已被冻结不可操作',false);
  33. }
  34. // 获取授权TOKEN
  35. $jwt = new Jwt('jwt_wx');
  36. $token = $jwt->getToken($userId, 3);
  37. // 结果返回
  38. $result = [
  39. 'access_token' => $token,
  40. 'info'=> $this->userInfo,
  41. ];
  42. // 用户信息
  43. RedisService::set("auths:info:{$userId}", $this->userInfo, 4*24*3600);
  44. return message('获取授权成功', true, $result);
  45. }
  46. public function register(MemberValidator $validator)
  47. {
  48. $params = request()->all();
  49. $params = $validator->check($params, 'register');
  50. if(!is_array($params)){
  51. return message($params, true);
  52. }
  53. }
  54. /**
  55. * 发送验证码
  56. * @param MemberValidator $validator
  57. * @return array
  58. */
  59. public function sendmsm(MemberValidator $validator)
  60. {
  61. $username = request()->post('username');
  62. $check1 = $validator->check(['mobile'=> $username],'mobile');
  63. $type = !is_array($check1)? 2 : 1;
  64. $check2 = $validator->check(['email'=> $username], 'email');
  65. if(!is_array($check1) && !is_array($check2)){
  66. return message(!is_array($check1)? $check1 : $check2, true);
  67. }
  68. // 手机短信
  69. if($type == 1){
  70. if(!SmsService::make()->sendCode($username, 'reg')){
  71. return message(SmsService::getError());
  72. }
  73. }else{
  74. if(!EmailService::make()->sendCode($username, 'reg')){
  75. return message(EmailService::getError());
  76. }
  77. }
  78. return message($type==1? 1012 : 1016, true);
  79. }
  80. }