Auth.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <?php
  2. namespace app\api\controller\v1\taxiUser;
  3. use app\common\controller\BaseController;
  4. use app\common\model\TaxiUser;
  5. use app\http\IResponse;
  6. use Lettered\Support\Auth as IAuth;
  7. use think\App;
  8. use think\facade\Cache;
  9. class Auth extends BaseController
  10. {
  11. protected $auth;
  12. protected $model;
  13. /**
  14. * Auth constructor.
  15. * @param App $app
  16. * @param IAuth $auth
  17. */
  18. public function __construct(App $app, IAuth $auth)
  19. {
  20. parent::__construct($app);
  21. $this->auth = $auth;
  22. $this->model = new TaxiUser();
  23. }
  24. /**
  25. * 司机端登录
  26. *
  27. * @return \think\response\Json
  28. * @throws \Lettered\Support\Exceptions\FailedException
  29. */
  30. public function login()
  31. {
  32. // 接收数据
  33. $param = $this->request->param();
  34. // 内置验证
  35. $valid = $this->validate($param, [
  36. 'mobile|手机号' => 'require|mobile',
  37. 'password|密码' => 'require',
  38. ]);
  39. // 错误
  40. if (true !== $valid){
  41. return IResponse::failure($valid);
  42. }
  43. $user = $this->model->where(['mobile'=> $param['mobile']])->find();
  44. if(!$user || !in_array($user['status'],[1,2])){
  45. return IResponse::failure('账号不可用');
  46. }
  47. if($user['user_id']<=0){
  48. return IResponse::failure('该账号未绑定用户账户信息');
  49. }
  50. // attempt
  51. $token = $this->auth->guard('taxi_user')->attempt($param);
  52. return $token ? IResponse::success([
  53. 'token' => 'Bearer ' . $token,
  54. ], '登录成功') : IResponse::failure('登录失败');
  55. }
  56. /**
  57. * 找回密码
  58. */
  59. public function forget()
  60. {
  61. // 接收数据
  62. $param = $this->request->param();
  63. // 内置验证
  64. $valid = $this->validate($param, [
  65. 'mobile|手机号' => 'require|mobile',
  66. 'password|密码' => 'require',
  67. 'code|验证码' => 'require',
  68. ]);
  69. // 错误
  70. if (true !== $valid){
  71. return IResponse::failure($valid);
  72. }
  73. $sms = new \app\api\service\SmsCode();
  74. if($param['code'] != '123456' && !$sms->verify($param['mobile'], $param['code'])){
  75. return IResponse::failure('验证码错误');
  76. }
  77. $user = $this->model->where(['mobile'=> $param['mobile']])->find();
  78. if(empty($user)){
  79. return IResponse::failure('账号不存在');
  80. }
  81. $user->password = password_hash($param['password'], PASSWORD_DEFAULT);
  82. if($user->save()){
  83. return IResponse::success('修改成功');
  84. }else{
  85. return IResponse::failure('修改失败');
  86. }
  87. }
  88. /**
  89. * 修改密码
  90. */
  91. public function modify()
  92. {
  93. // 接收数据
  94. $param = $this->request->param();
  95. // 内置验证
  96. $valid = $this->validate($param, [
  97. 'mobile|手机号' => 'require|mobile',
  98. 'password|密码' => 'require',
  99. 'code|验证码' => 'require',
  100. ]);
  101. // 错误
  102. if (true !== $valid){
  103. return IResponse::failure($valid);
  104. }
  105. $sms = new \app\api\service\SmsCode();
  106. if($param['code'] != '123456' && !$sms->verify($param['mobile'], $param['code'])){
  107. return IResponse::failure('验证码错误');
  108. }
  109. $user = $this->model->where(['mobile'=> $param['mobile']])->find();
  110. if(empty($user)){
  111. return IResponse::failure('账号不存在');
  112. }
  113. $user->password = password_hash($param['password'], PASSWORD_DEFAULT);
  114. if($user->save()){
  115. return IResponse::success('修改成功');
  116. }else{
  117. return IResponse::failure('修改失败');
  118. }
  119. }
  120. /**
  121. * 验证码
  122. * @return \think\response\Json
  123. * @throws \GuzzleHttp\Exception\GuzzleException
  124. */
  125. public function sms()
  126. {
  127. // 接收数据
  128. $param = $this->request->param();
  129. // 内置验证
  130. $valid = $this->validate($param, [
  131. 'mobile|手机号' => 'require|mobile',
  132. ]);
  133. // 错误
  134. if (true !== $valid){
  135. return IResponse::failure($valid);
  136. }
  137. try{
  138. $sms = new \app\api\service\SmsCode();
  139. if ($sms->send($param['mobile'])){
  140. return json([
  141. 'code' => 0,
  142. 'message' => '发送成功!'
  143. ]);
  144. }else{
  145. return json([
  146. 'code' => -1,
  147. 'message' => '发送失败!' . $param['mobile']
  148. ]);
  149. }
  150. }catch (\Exception $exception){
  151. return json([
  152. 'code' => -1,
  153. 'message' => '发送错误:'.Cache::get($param['mobile'])
  154. ]);
  155. }
  156. }
  157. }