LoginController.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <?php
  2. namespace App\Http\Controllers\Api\v1;
  3. use App\Http\Controllers\Api\webApp;
  4. use App\Http\Validator\MemberValidator;
  5. use App\Services\Api\MemberService;
  6. use App\Services\ConfigService;
  7. use App\Services\EmailService;
  8. use App\Services\SmsService;
  9. use App\Services\WechatService;
  10. /**
  11. * 授权登录控制器基类
  12. * Class LoginController
  13. * @package App\Http\Controllers
  14. */
  15. class LoginController extends webApp
  16. {
  17. /**
  18. * 手机号登录
  19. * @return array
  20. */
  21. public function loginEmail(MemberValidator $validator)
  22. {
  23. $params = request()->all();
  24. $params = $validator->check($params, 'email_password_login');
  25. if (!is_array($params)) {
  26. return showJson($params, false);
  27. }
  28. if (!$result = MemberService::make()->loginByEmail($params)) {
  29. return showJson(MemberService::make()->getError(), false);
  30. }
  31. return showJson(MemberService::make()->getError(), true, $result);
  32. }
  33. /**
  34. * 手机号登录
  35. * @return array
  36. */
  37. public function loginMobile(MemberValidator $validator)
  38. {
  39. $params = request()->all();
  40. $params = $validator->check($params, 'mobile_password_login');
  41. if (!is_array($params)) {
  42. return showJson($params, false);
  43. }
  44. if (!$result = MemberService::make()->loginByMobile($params)) {
  45. return showJson(MemberService::make()->getError(), false);
  46. }
  47. return showJson(MemberService::make()->getError(), true, $result);
  48. }
  49. /**
  50. * 注册
  51. * @return array
  52. */
  53. public function register(MemberValidator $validator)
  54. {
  55. $params = request()->all();
  56. $type = request()->post('type',1);
  57. $params = $validator->check($params, $type==1?'email_register':'mobile_register');
  58. if (!is_array($params)) {
  59. return showJson($params, false);
  60. }
  61. if (!$result = MemberService::make()->register($params)) {
  62. return showJson(MemberService::make()->getError(), false);
  63. }
  64. return showJson(MemberService::make()->getError(), true, $result);
  65. }
  66. /**
  67. * 修改账号信息
  68. * @param MemberValidator $validator
  69. * @return array
  70. */
  71. public function forget(MemberValidator $validator)
  72. {
  73. $params = request()->all();
  74. $params = $validator->check($params, 'forget');
  75. if (!is_array($params)) {
  76. return showJson($params, false);
  77. }
  78. if(!MemberService::make()->forget($this->userId, $params)){
  79. $error = MemberService::make()->getError();
  80. return showJson($error,false,'',$error==1040?405:0);
  81. }else{
  82. return showJson(1013,true);
  83. }
  84. }
  85. /**
  86. * 发送短信验证码
  87. * @return array
  88. */
  89. public function sendSms(MemberValidator $validator)
  90. {
  91. $params = request()->all();
  92. $params = $validator->check($params, 'sms');
  93. $appSources = isset($params['app_sources']) ? $params['app_sources'] : '';
  94. if (!is_array($params)) {
  95. return showJson($params, false);
  96. }
  97. // 发送验证码处理
  98. $mobile = isset($params['mobile']) ? $params['mobile'] : '';
  99. $scene = isset($params['scene']) ? $params['scene'] : '';
  100. switch ($scene) {
  101. case 'reg':
  102. if (MemberService::make()->checkExists('mobile', $mobile)) {
  103. return showJson(1058, false, ['app_url' => ConfigService::make()->getConfigByCode("app_{$appSources}_url"),], 406);
  104. }
  105. break;
  106. case 'modify_mobile':
  107. if (MemberService::make()->checkExists('mobile', $mobile)) {
  108. return showJson(1058, false, ['app_url' => ConfigService::make()->getConfigByCode("app_{$appSources}_url"),], 406);
  109. }
  110. break;
  111. case 'reset_password':
  112. case 'login':
  113. if (!MemberService::make()->checkExists('mobile',$mobile)) {
  114. return showJson(2001, false, ['app_url' => ConfigService::make()->getConfigByCode("app_{$appSources}_url"),], 406);
  115. }
  116. break;
  117. }
  118. if (!SmsService::make()->send($mobile, $scene)) {
  119. return showJson(SmsService::make()->getError(), false);
  120. }
  121. return showJson(1011, true);
  122. }
  123. /**
  124. * 发送邮箱验证码
  125. * @return array
  126. */
  127. public function sendEmail(MemberValidator $validator)
  128. {
  129. $params = request()->all();
  130. $params = $validator->check($params, 'email');
  131. $appSources = isset($params['app_sources']) ? $params['app_sources'] : '';
  132. if (!is_array($params)) {
  133. return showJson($params, false);
  134. }
  135. // 发送验证码处理
  136. $email = isset($params['email']) ? $params['email'] : '';
  137. $scene = isset($params['scene']) ? $params['scene'] : '';
  138. switch ($scene) {
  139. case 'reg':
  140. if (MemberService::make()->checkExists('email', $email)) {
  141. return showJson(2009, false, ['app_url' => ConfigService::make()->getConfigByCode("app_{$appSources}_url"),], 406);
  142. }
  143. break;
  144. case 'modify_email':
  145. if (MemberService::make()->checkExists('email', $email)) {
  146. return showJson(2009, false, ['app_url' => ConfigService::make()->getConfigByCode("app_{$appSources}_url"),], 406);
  147. }
  148. break;
  149. case 'reset_password':
  150. case 'login':
  151. if (!MemberService::make()->checkExists('email',$email)) {
  152. return showJson(2001, false, ['app_url' => ConfigService::make()->getConfigByCode("app_{$appSources}_url"),], 406);
  153. }
  154. break;
  155. }
  156. if (!EmailService::make()->send($email, $scene)) {
  157. return showJson(EmailService::make()->getError(), false);
  158. }
  159. return showJson(2020, true);
  160. }
  161. }