user); return $response->write($this->view() ->assign('user', $this->user) ->assign('themes', $themes) ->assign('methods', $methods) ->assign('ga_url', $ga_url) ->fetch('user/edit.tpl')); } /** * @throws RedisException */ public function updateEmail(ServerRequest $request, Response $response, array $args): ResponseInterface { $new_email = $this->antiXss->xss_clean($request->getParam('newemail')); $user = $this->user; $old_email = $user->email; if (! $_ENV['enable_change_email'] || $user->is_shadow_banned) { return ResponseHelper::error($response, '修改失败'); } if ($new_email === '') { return ResponseHelper::error($response, '未填写邮箱'); } $email_check = Filter::checkEmailFilter($email); if (! $email_check) { return ResponseHelper::error($response, '无效的邮箱'); } $exist_user = (new User())->where('email', $new_email)->first(); if ($exist_user !== null) { return ResponseHelper::error($response, '邮箱已经被使用了'); } if ($new_email === $old_email) { return ResponseHelper::error($response, '新邮箱不能和旧邮箱一样'); } if (Config::obtain('reg_email_verify')) { $redis = (new Cache())->initRedis(); $email_verify_code = $request->getParam('emailcode'); $email_verify = $redis->get('email_verify:' . $email_verify_code); if (! $email_verify) { return ResponseHelper::error($response, '你的邮箱验证码不正确'); } $redis->del('email_verify:' . $email_verify_code); } $user->email = $new_email; if (! $user->save()) { return ResponseHelper::error($response, '修改失败'); } return $response->withJson([ 'ret' => 1, 'msg' => '修改成功', 'data' => [ 'email' => $user->email, ], ]); } public function updateUsername(ServerRequest $request, Response $response, array $args): ResponseInterface { $newusername = $this->antiXss->xss_clean($request->getParam('newusername')); $user = $this->user; if ($user->is_shadow_banned) { return ResponseHelper::error($response, '修改失败'); } $user->user_name = $newusername; if (! $user->save()) { return ResponseHelper::error($response, '修改失败'); } return $response->withJson([ 'ret' => 1, 'msg' => '修改成功', 'data' => [ 'username' => $user->user_name, ], ]); } public function unbindIM(ServerRequest $request, Response $response, array $args): ResponseInterface { if (! $this->user->unbindIM()) { return ResponseHelper::error($response, '解绑失败'); } return $response->withHeader('HX-Refresh', 'true')->withJson([ 'ret' => 1, 'msg' => '解绑成功', ]); } public function updatePassword(ServerRequest $request, Response $response, array $args): ResponseInterface { $password = $request->getParam('password'); $new_password = $request->getParam('new_password'); $confirm_new_password = $request->getParam('confirm_new_password'); $user = $this->user; if ($password === '' || $new_password === '' || $confirm_new_password === '') { return ResponseHelper::error($response, '密码不能为空'); } if (! Hash::checkPassword($user->pass, $password)) { return ResponseHelper::error($response, '旧密码错误'); } if ($new_password !== $confirm_new_password) { return ResponseHelper::error($response, '两次输入不符合'); } if (strlen($new_password) < 8) { return ResponseHelper::error($response, '密码太短啦'); } $user->pass = Hash::passwordHash($new_password); if (! $user->save()) { return ResponseHelper::error($response, '修改失败'); } if (Config::obtain('enable_forced_replacement')) { $user->removeLink(); } return ResponseHelper::success($response, '修改成功'); } public function resetPasswd(ServerRequest $request, Response $response, array $args): ResponseInterface { $user = $this->user; $user->passwd = Tools::genRandomChar(16); $user->uuid = Uuid::uuid4(); if (! $user->save()) { return ResponseHelper::error($response, '重置失败'); } return $response->withJson([ 'ret' => 1, 'msg' => '重置成功', 'data' => [ 'passwd' => $user->passwd, 'uuid' => $user->uuid, ], ]); } public function resetApiToken(ServerRequest $request, Response $response, array $args): ResponseInterface { $user = $this->user; $user->api_token = Tools::genRandomChar(32); if (! $user->save()) { return ResponseHelper::error($response, '重置失败'); } return ResponseHelper::success($response, '重置成功'); } public function updateMethod(ServerRequest $request, Response $response, array $args): ResponseInterface { $user = $this->user; $method = strtolower($this->antiXss->xss_clean($request->getParam('method'))); if ($method === '') { ResponseHelper::error($response, '非法输入'); } if (! Tools::isParamValidate('method', $method)) { ResponseHelper::error($response, '加密无效'); } $user->method = $method; if (! $user->save()) { return ResponseHelper::error($response, '修改失败'); } return ResponseHelper::success($response, '修改成功'); } public function resetURL(ServerRequest $request, Response $response, array $args): ResponseInterface { $this->user->removeLink(); // cool面板同时重置密钥 $user = $this->user; $user->passwd = Tools::genRandomChar(16); $user->uuid = Uuid::uuid4(); if (! $user->save()) { return ResponseHelper::error($response, '重置失败'); } // end return ResponseHelper::success($response, '重置成功'); } public function updateDailyMail(ServerRequest $request, Response $response, array $args): ResponseInterface { $value = (int) $request->getParam('mail'); if (! in_array($value, [0, 1, 2])) { return ResponseHelper::error($response, '参数错误'); } $user = $this->user; $user->mail_level = $value; if (! $user->save()) { return ResponseHelper::error($response, '修改失败'); } return ResponseHelper::success($response, '修改成功'); } public function updateDailyMail_old(ServerRequest $request, Response $response, array $args): ResponseInterface { $value = (int) $request->getParam('mail'); if (! in_array($value, [0, 1, 2])) { return ResponseHelper::error($response, '参数错误'); } $user = $this->user; $user->daily_mail_enable = $value; if (! $user->save()) { return ResponseHelper::error($response, '修改失败'); } return ResponseHelper::success($response, '修改成功'); } public function updateContactMethod(ServerRequest $request, Response $response, array $args): ResponseInterface { $value = (int) $request->getParam('contact'); if (! in_array($value, [1, 2])) { return ResponseHelper::error($response, '参数错误'); } $user = $this->user; $user->contact_method = $value; if (! $user->save()) { return ResponseHelper::error($response, '修改失败'); } return ResponseHelper::success($response, '修改成功'); } public function updateTheme(ServerRequest $request, Response $response, array $args): ResponseInterface { $theme = $this->antiXss->xss_clean($request->getParam('theme')); $user = $this->user; if ($theme === '') { return ResponseHelper::error($response, '主题不能为空'); } $user->theme = $theme; if (! $user->save()) { return ResponseHelper::error($response, '修改失败'); } return $response->withHeader('HX-Refresh', 'true')->withJson([ 'ret' => 1, 'msg' => '修改成功', ]); } public function sendToGulag(ServerRequest $request, Response $response, array $args): ResponseInterface { $user = $this->user; $password = $request->getParam('password'); if ($password === '' || ! Hash::checkPassword($user->pass, $password)) { return ResponseHelper::error($response, '密码错误'); } if ($_ENV['enable_kill']) { Auth::logout(); $user->kill(); return $response->withHeader('HX-Refresh', 'true')->withJson([ 'ret' => 1, 'msg' => '账号删除成功,感谢使用。', ]); } return ResponseHelper::error($response, '自助账号删除未启用'); } }