public function __invoke() { // 验证登录 $session = $this->getSession(); if (!empty($session['user'])) { $session->addFlash('info', '已经登录过了'); return new RedirectResponse($this->generateUrl('forum_homepage')); } $request = $this->getRequest(); if ($request->getMethod() == 'POST') { $posts = $request->request; try { $username = $posts->get('username'); $password = $posts->get('password'); if (empty($username)) { throw new \Exception('用户名不能为空'); } if (empty($password)) { throw new \Exception("密码不能为空"); } // 查询重复 $user = UserModel::getUserByUsername($username); if (!$user) { $user = UserModel::getUserByEmail($username); } if (!$user) { throw new \Exception("用户不存在"); } if (UserModel::hashpass($password) != $user->password) { throw new \Exception("密码错误"); } $user->loginTimestamp = time(); UserModel::saveUser($user); $session['user'] = $user->toArray(); if ($request->isXmlHttpRequest()) { $modal_content = $this->render('modal.html.twig', array('title' => '登录成功', 'msg' => '<p class="text-success">登录成功</p>', 'jump_link' => $this->generateUrl('forum_homepage'))); return new JsonResponse(array('status' => 1, 'modal' => $modal_content->getContent())); } else { $session->addFlash('success', '登录成功'); return new RedirectResponse($this->generateUrl('forum_homepage')); } } catch (\Exception $e) { if ($request->isXmlHttpRequest()) { $modal_content = $this->render('modal.html.twig', array('title' => '登录失败', 'msg' => '<p class="text-danger">登录失败:' . $e->getMessage() . '</p>')); return new JsonResponse(array('status' => 0, 'modal' => $modal_content->getContent())); } else { $session->addFlash('error', "登录失败:{$e->getMessage()}"); } } } return $this->render('user/login.html.twig'); }
protected function handle() { $request = $this->getRequest(); $user_id = $request->query->get('user_id'); if (empty($user_id)) { throw new \Exception('参数错误'); } $user = UserModel::getUser($user_id); if (!$user) { throw new \Exception('用户不存在'); } if ($request->getMethod() == 'POST') { $session = $this->getSession(); $posts = $request->request; try { $password = $posts->get('password'); $repeat_password = $posts->get('repeat_password'); $nickname = $posts->get('nickname'); if (empty($nickname) || strlen($nickname) < 2) { throw new \Exception("昵称不能为空,必需至少2个字符"); } if (!empty($password) && strlen($password) < 6) { throw new \Exception("登录密码必需至少6个字符"); } if (!empty($repeat_password) && strlen($repeat_password) < 6) { throw new \Exception("重复密码必需至少6个字符"); } if (!empty($password) && !empty($repeat_password) && $password != $repeat_password) { throw new \Exception("重复密码与登录密码不一致"); } $email = $posts->get('email'); $mobile = $posts->get('mobile'); $user->nickname = $nickname; if (!empty($password)) { $user->password = $password; } $user->email = $email; $user->mobile = $mobile; $user->updateTimestamp = time(); UserModel::saveUser($user); $session->addFlash('success', '操作成功'); } catch (\Exception $e) { $session->addFlash('error', $e->getMessage()); } return new RedirectResponse($this->generateUrl('admin_forum_user_list')); } return $this->render('user/user-edit.html.twig', array('user' => $user)); }