Exemple #1
0
 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');
 }
Exemple #2
0
 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));
 }