middleware('auth.api', ['except' => ['login','smsCode']]); } /** * 用户登录 * @param Request $request [description] * @return [type] [description] */ public function login(Request $request) { // $info = $request->userInfo; $code = $request->code; $app = app('wechat.mini_program'); $jscode = $app->auth->session($code); $user = User::where('unionid', $jscode->unionid)->first(); $token = Auth::guard('api')->login($user); return $this->success([ 'access_token' => $token, 'access_type' => 'Bearer', 'expires_in' => Auth::guard('api')->factory()->getTTL() * 60, 'userInfo' => [ 'uid' => $user->id ?? '', 'avatar' => $user->info->headimgurl ?? '', 'nickname' => $user->info->nickname ?? '', 'openid' => $jscode->openid ?? '' ] ]); } /** * 刷新TOKEN * @return [type] [description] */ public function refresh() { return $this->success([ 'access_token' => Auth::guard('api')->refresh(true), 'access_type' => 'Bearer', 'expires_in' => Auth::guard('api')->factory()->getTTL() * 60, ]); } /** * 退出登录 * @return [type] [description] */ public function logout() { Auth::guard('api')->logout(true); return $this->message('退出登录成功'); } /** * 发送验证码 * @return */ public function smsCode(Request $request) { $channel = $request->channel; $mobile = $request->mobile; switch ($channel) { case 'BYCODE': case 'FORGOT': // 验证码登录,必须要手机号存在才行 $validator = Validator::make($request->all(), [ 'mobile' => 'required|mobile|exists:users', ], [ 'mobile.required' => '手机号码必须填写', 'mobile.mobile' => '手机号码格式不正确', 'mobile.exists' => '手机号码不存在', ]); break; case 'BIND': // 绑定手机号,要不存在才可以 $validator = Validator::make($request->all(), [ 'mobile' => 'required|mobile|unique:users', ], [ 'mobile.required' => '手机号码必须填写', 'mobile.mobile' => '手机号码格式不正确', 'mobile.unique' => '手机号码已经绑定', ]); break; default: $validator = Validator::make($request->all(), [ 'mobile' => 'required|mobile', ], [ 'mobile.required' => '手机号码必须填写', 'mobile.mobile' => '手机号码格式不正确', ]); break; } if ($validator->fails()) { return $this->failed($validator->errors()->first()); } $res = SmsModel::verify_code($request->mobile); if ($res !== true) { return $this->failed($res); } try { \Sms::send($mobile, $channel); return $this->success('验证码发送成功'); } catch (\Exception $e) { return $this->failed($e->getMessage()); } } }