LoginController.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Helpers\Jwt;
  4. use App\Http\Validator\MemberValidator;
  5. use App\Services\Api\MemberService;
  6. use App\Services\EmailService;
  7. use App\Services\RedisService;
  8. use App\Services\SmsService;
  9. /**
  10. * 授权登录控制器基类
  11. * Class LoginController
  12. * @package App\Http\Controllers
  13. */
  14. class LoginController extends webApp
  15. {
  16. public function __construct()
  17. {
  18. $this->service = new MemberService();
  19. }
  20. /**
  21. * 用户登录
  22. * @return array
  23. */
  24. public function login(MemberValidator $validator)
  25. {
  26. $params = request()->all();
  27. $params = $validator->check($params, 'login');
  28. if(!is_array($params)){
  29. return message($params, true);
  30. }
  31. if(!$result = MemberService::make()->login($params)){
  32. return message(MemberService::getError(), true);
  33. }
  34. return message(2004, true, $result);
  35. }
  36. /**
  37. * 账号注册
  38. * @param MemberValidator $validator
  39. * @return array
  40. */
  41. public function register(MemberValidator $validator)
  42. {
  43. $params = request()->all();
  44. $params = $validator->check($params, 'register');
  45. if(!is_array($params)){
  46. return message($params, true);
  47. }
  48. if($params['code'] != 123456 && !$this->checkCode($params['username'], $params['code'], 'reg')){
  49. return message(1017, true);
  50. }
  51. if(!MemberService::make()->register($params)){
  52. return message(MemberService::getError());
  53. }
  54. return message(2008);
  55. }
  56. /**
  57. * 检测验证码
  58. * @param $username 账号
  59. * @param $code 验证码
  60. * @param $scene 验证场景:reg-注册,forget-找回密码
  61. * @return bool
  62. */
  63. protected function checkCode($username, $code, $scene)
  64. {
  65. $validator = new MemberValidator();
  66. if(!is_array($validator->check(['mobile'=> $username],'mobile'))){
  67. return EmailService::make()->check($username, $code, $scene);
  68. }else{
  69. return SmsService::make()->check($username, $code, $scene);
  70. }
  71. }
  72. /**
  73. * 发送验证码
  74. * @param MemberValidator $validator
  75. * @return array
  76. */
  77. public function sendmsm(MemberValidator $validator)
  78. {
  79. $username = request()->post('username');
  80. $check1 = $validator->check(['mobile'=> $username],'mobile');
  81. $type = !is_array($check1)? 2 : 1;
  82. $check2 = $validator->check(['email'=> $username], 'email');
  83. if(!is_array($check1) && !is_array($check2)){
  84. return message(!is_array($check1)? $check1 : $check2, true);
  85. }
  86. // 手机短信
  87. if($type == 1){
  88. if(!SmsService::make()->sendCode($username, 'reg')){
  89. return message(SmsService::getError()??'1003');
  90. }
  91. }else{
  92. if(!EmailService::make()->sendCode($username, 'reg')){
  93. return message(EmailService::getError()??'1003');
  94. }
  95. }
  96. return message($type==1? 1012 : 1016, true);
  97. }
  98. }