LoginController.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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. /**
  17. * LoginController constructor.
  18. */
  19. public function __construct()
  20. {
  21. $this->service = new MemberService();
  22. }
  23. /**
  24. * 用户登录
  25. * @return array
  26. */
  27. public function login(MemberValidator $validator)
  28. {
  29. $params = request()->all();
  30. $params = $validator->check($params, 'login');
  31. if(!is_array($params)){
  32. return message($params, false);
  33. }
  34. if(!$result = MemberService::make()->login($params)){
  35. return message(MemberService::make()->getError(), false);
  36. }
  37. return message(2004, true, $result);
  38. }
  39. /**
  40. * 账号注册
  41. * @param MemberValidator $validator
  42. * @return array
  43. */
  44. public function register(MemberValidator $validator)
  45. {
  46. $params = request()->all();
  47. $params = $validator->check($params, 'register');
  48. if(!is_array($params)){
  49. return message($params, false);
  50. }
  51. if($params['code'] != 123456 && !$this->checkCode($params['username'], $params['code'], 'reg')){
  52. return message($this->error, false);
  53. }
  54. if(!MemberService::make()->register($params)){
  55. return message(MemberService::make()->getError(), false);
  56. }
  57. return message(2008);
  58. }
  59. /**
  60. * 检测验证码
  61. * @param $username 账号
  62. * @param $code 验证码
  63. * @param $scene 验证场景:reg-注册,forget-找回密码
  64. * @return bool
  65. */
  66. protected function checkCode($username, $code, $scene)
  67. {
  68. $validator = new MemberValidator();
  69. if(!is_array($validator->check(['mobile'=> $username],'mobile'))){
  70. if(!EmailService::make()->check($username, $code, $scene)){
  71. $this->error = EmailService::make()->getError();
  72. return false;
  73. }
  74. return true;
  75. }else{
  76. if(!SmsService::make()->check($username, $code, $scene)){
  77. $this->error = SmsService::make()->getError();
  78. return false;
  79. }
  80. return true;
  81. }
  82. }
  83. /**
  84. * 发送验证码
  85. * @param MemberValidator $validator
  86. * @return array
  87. */
  88. public function sendmsm(MemberValidator $validator)
  89. {
  90. $username = request()->post('username');
  91. $check1 = $validator->check(['mobile'=> $username],'mobile');
  92. $type = !is_array($check1)? 2 : 1;
  93. $check2 = $validator->check(['email'=> $username], 'email');
  94. if(!is_array($check1) && !is_array($check2)){
  95. return message(!is_array($check1)? $check1 : $check2, false);
  96. }
  97. // 手机短信
  98. if($type == 1){
  99. if(!SmsService::make()->sendCode($username, 'reg')){
  100. return message(SmsService::make()->getError(), false);
  101. }
  102. }else{
  103. if(!EmailService::make()->sendCode($username, 'reg')){
  104. return message(EmailService::make()->getError(), false);
  105. }
  106. }
  107. return message($type==1? 1012 : 1016, true);
  108. }
  109. }