where('status', 0) ->where('email', $request->post('email')) ->first(); if (!$user) { return Util::fail(['user' => $user], trans('user_none')); } $user = $user->toArray(); $userPassword = $user['password']; //加密 $hashedPassword = password_hash($password, PASSWORD_DEFAULT); //验证密码 if (!password_verify($userPassword, $hashedPassword)) { return Util::fail([], trans('password_error')); } $userId = $user['id']; // 实际从数据库获取 Redis::set('user_' . $userId, $user); //密码验证成功后加密生成 Token $token = JwtUtil::generateToken($userId); $result = $user; unset($result['password']); $result['token'] = $token; return Util::success($result, trans('login_success')); } /** * 发送邮箱验证码 * @param Request $request * @return \support\Response * @throws \Random\RandomException */ public function sendCode(Request $request) { $email = Util::getParam($request,'email'); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { return Util::fail([], 'email' . trans('not_null')); } // 生成验证码 $code = str_pad(random_int(0, 999999), 6, '0', STR_PAD_LEFT); // 发送邮件 $mailService = new MailService(); if ($mailService->sendVerificationCode($email, $code)) { // 存储验证码到 Redis Redis::set("verification_code:{$email}", $code, 300); return Util::success([], '验证码已发送'); } return Util::fail([], '邮件发送失败'); } /** * 注册 * @param Request $request * @return \support\Response * @throws \Random\RandomException */ public function register(Request $request) { $email = Util::getParam($request,'email','asdf'); $code = Util::getParam($request,'code'); $sex = Util::getParam($request,'sex',0); $name = Util::getParam($request,'name',0); $password = Util::getParam($request,'password'); $mobile = Util::getParam($request,'mobile'); $id = Util::getParam($request,'id'); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { return Util::fail([], 'email'.$email . trans('not_null')); } $res = User::select('id', 'email') ->where('email', $email) ->first(); // if (!Util::isEmpty($res)) { // return Util::fail([], trans('email_repeat')); // } if (Util::isEmpty($name)) { return Util::fail([], 'name' . trans('not_null')); } $verification_code = Redis::get("verification_code:{$email}"); if ($code != $verification_code) { return Util::fail([], trans('code_error')); } //加密 $hashedPassword = password_hash($password, PASSWORD_DEFAULT); $data = [ 'mobile' => $mobile, 'email' => $email, 'name' => $name, 'sex' => $sex, 'role' => 1, 'password' => $hashedPassword, ]; if (Util::isEmpty($id)) { $res = User::create($data); } else { $res = User::where('id', $id) ->update($data); // Log::info('update', ['res' => $res]); (!$res)?: $res=User::find($id)->toArray(); } if ($res) { return Util::success($res); } else { return Util::fail($res); } } }