AuthController.php-- 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Modes\User;
  4. use Illuminate\Http\Request;
  5. use App\Http\Controllers\Controller;
  6. use Illuminate\Support\Facades\Auth;
  7. use Illuminate\Support\Facades\Validator;
  8. class AuthController extends Controller
  9. {
  10. /**
  11. * 注册
  12. * @author fatty
  13. * @date 2018/12/13
  14. * @description
  15. */
  16. public function reg(Request $request)
  17. {
  18. $validator = Validator::make($param = $request->all(), [
  19. 'mobile' => [
  20. 'required',
  21. 'string',
  22. 'regex:/^[1][3,4,5,7,8][0-9]{9}$/',
  23. function ($attribute, $value, $fail) {
  24. if (User::whereMobile($value)->exists()) {
  25. return $fail('手机号码已注册');
  26. }
  27. },
  28. ],
  29. 'password' => 'required|min:6',
  30. 'invitor' => [
  31. 'required',
  32. function ($attribute, $value, $fail) {
  33. if (User::whereInviteCode($value)->exists() == false) {
  34. return $fail('邀请码不存在');
  35. }
  36. },
  37. ],
  38. ]);
  39. if ($validator->fails()) {
  40. return showJson(102, $validator->errors()->first());
  41. }
  42. $param['invitor'] = User::whereInviteCode($param['invitor'])->first()->id;
  43. $user = User::addGetId($param);
  44. if ($user == false) {
  45. return showJson(102, '注册失败,请稍后重试');
  46. }
  47. return showJson(101, '注册成功', [
  48. 'accessToken' => Auth::guard('api')->tokenById($user),
  49. ]);
  50. }
  51. /**
  52. * 登录
  53. * @author fatty
  54. * @date 2018/12/13
  55. * @description
  56. */
  57. public function login(Request $request)
  58. {
  59. $validator = Validator::make($param = $request->post(), [
  60. 'type' => 'required|between:1,2',
  61. 'mobile' => 'required|string|exists:user,mobile',
  62. ]);
  63. //修改wsl20190624
  64. if(@$param['type'] == 1){
  65. $validator = Validator::make($param = $request->post(), [
  66. 'password' => 'required_without:sms|min:6',
  67. ]);
  68. }
  69. if ($validator->fails()) {
  70. return showJson(102, $validator->errors()->first());
  71. }
  72. if ($param['type'] == 1) {//密码登录
  73. $users = Auth::guard('api')->attempt(['mobile' => $param['mobile'], 'password' => $param['password']]);
  74. if (!$users) {
  75. return showJson(102, 10003);
  76. }
  77. $user = User::whereMobile($param['mobile'])->first();
  78. if ($user->status == 2) {
  79. return showJson(102, '账号已冻结');
  80. }
  81. } else {
  82. // 验证短信
  83. $smsProvider = \App::make('sms');
  84. $sms = $smsProvider->verifySms($param['mobile'], $param['sms']);
  85. if ($sms == false) {
  86. return showJson(102, '短信验证码错误');
  87. }
  88. $user = User::whereMobile($param['mobile'])->first();
  89. }
  90. if ($user->is_frontend != 1) {
  91. return showJson(102,'抱歉,您不是前端用户');
  92. }
  93. return showJson(101, '登录成功', [
  94. 'accessToken' => Auth::guard('api')->tokenById($user->id)
  95. ]);
  96. }
  97. /**
  98. * 忘记密码
  99. * @author fatty
  100. * @date 2019/2/28
  101. * @param Request $request
  102. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  103. * @description
  104. */
  105. public function forgetpass(Request $request)
  106. {
  107. $validator = Validator::make($param = $request->post(), [
  108. 'mobile' => 'required|exists:user,mobile',
  109. 'password' => 'required|min:6',
  110. 'sms' => 'required|size:4'
  111. ]);
  112. if ($validator->fails()) {
  113. return showJson(102, $validator->errors()->first());
  114. }
  115. // 验证短信
  116. $smsProvider = \App::make('sms');
  117. $sms = $smsProvider->verifySms($param['mobile'], $param['sms']);
  118. if ($sms == false) {
  119. return showJson(102, '短信验证码错误');
  120. }
  121. $update = User::whereMobile($param['mobile'])->update(['password' => User::encodePassword($param['password'])]);
  122. if (empty($update)) {
  123. return showJson(102, '修改失败');
  124. }
  125. return showJson(101, '修改成功');
  126. }
  127. }