src/Controller/Super/ReviewerController.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Super;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  7. use App\Entity\ReviewBatch;
  8. use App\Entity\Reviewer;
  9. use App\Form\ReviewerType;
  10. use App\Form\UserPasswordType;
  11. /**
  12.  *
  13.  * @Route("/super/reviewer/", name="super_reviewer_")
  14.  * @author "wendell.zheng <wxzheng@ustc.edu.cn>"
  15.  */
  16. class ReviewerController extends BaseController
  17. {
  18.     /**
  19.      *
  20.      * @Route("list/{id}", name="list", requirements={"id"="\d+"})
  21.      */
  22.     public function list(ReviewBatch $reviewBatch): Response
  23.     {
  24.         return $this->render('super/reviewer/list.html.twig', [
  25.             'name' => $this->getLowerName(),
  26.             'title' => $reviewBatch->getName() . ' - 专家列表',
  27.             'reviewBatch' => $reviewBatch,
  28.             'entities' => $this->getRepository()
  29.                 ->findByReviewBatch($reviewBatch)
  30.         ]);
  31.     }
  32.     /**
  33.      *
  34.      * @Route("new/{id}", name="new", requirements={"id"="\d+"})
  35.      */
  36.     public function new(ReviewBatch $reviewBatchRequest $requestUserPasswordHasherInterface $passwordHasher): Response
  37.     {
  38.         $reviewer = new Reviewer();
  39.         $reviewer->setUsername($reviewBatch->getId() . '_');
  40.         $reviewer->setReviewBatch($reviewBatch);
  41.         $form $this->createForm(ReviewerType::class, $reviewer);
  42.         $form->handleRequest($request);
  43.         if ($form->isSubmitted() && $form->isValid()) {
  44.             $password $form->get('password')->getData();
  45.             return $this->changePassword($reviewer$password$passwordHasher);
  46.         }
  47.         return $this->render('super/reviewer/edit.html.twig', [
  48.             'name' => $this->getLowerName(),
  49.             'title' => $reviewBatch->getName() . ' - 新建专家',
  50.             'reviewBatch' => $reviewBatch,
  51.             'form' => $form->createView()
  52.         ]);
  53.     }
  54.     /**
  55.      *
  56.      * @Route("edit/{id}", name="edit", requirements={"id"="\d+"})
  57.      */
  58.     public function edit(Reviewer $reviewerRequest $request): Response
  59.     {
  60.         $reviewBatch $reviewer->getReviewBatch();
  61.         $title $reviewer->getId() ? '编辑' '新建';
  62.         $form $this->createForm(ReviewerType::class, $reviewer);
  63.         $form->handleRequest($request);
  64.         if ($form->isSubmitted() && $form->isValid()) {
  65.             $this->em->persist($reviewer);
  66.             $this->em->flush();
  67.             $this->addFlash('reviewer''操作成功');
  68.             return $this->redirectToRoute('super_reviewer_list', [
  69.                 'id' => $reviewBatch->getId()
  70.             ]);
  71.         }
  72.         return $this->render('super/reviewer/edit.html.twig', [
  73.             'name' => $this->getLowerName(),
  74.             'title' => $reviewBatch->getName() . ' - ' $title '专家',
  75.             'reviewBatch' => $reviewBatch,
  76.             'form' => $form->createView()
  77.         ]);
  78.     }
  79.     /**
  80.      *
  81.      * @Route("delete/{id}", name="delete", requirements={"id"="\d+"})
  82.      */
  83.     public function delete(Reviewer $reviewer): Response
  84.     {
  85.         return $this->doDelete($reviewer'super_reviewer_list', [
  86.             'id' => $reviewer->getReviewBatch()
  87.                 ->getId()
  88.         ]);
  89.     }
  90.     /**
  91.      *
  92.      * @Route("password/{id}", name="password", requirements={"id"="\d+"})
  93.      */
  94.     public function password(Reviewer $reviewerRequest $requestUserPasswordHasherInterface $passwordHasher)
  95.     {
  96.         $reviewBatch $reviewer->getReviewBatch();
  97.         $form $this->createForm(UserPasswordType::class, $reviewer);
  98.         $form->handleRequest($request);
  99.         if ($form->isSubmitted() && $form->isValid()) {
  100.             return $this->changePassword($reviewer$form->get('password')
  101.                 ->getData(), $passwordHasher);
  102.         }
  103.         return $this->render('super/reviewer/edit.html.twig', [
  104.             'title' => '修改密码',
  105.             'reviewBatch' => $reviewBatch,
  106.             'form' => $form->createView()
  107.         ]);
  108.     }
  109.     protected function changePassword(Reviewer $reviewer$plaintextPasswordUserPasswordHasherInterface $passwordHasher): Response
  110.     {
  111.         $hashedPassword $passwordHasher->hashPassword($reviewer$plaintextPassword);
  112.         $reviewer->setPassword($hashedPassword);
  113.         $this->em->persist($reviewer);
  114.         $this->em->flush();
  115.         $this->addFlash('reviewer''操作成功');
  116.         return $this->redirectToRoute('super_reviewer_list', [
  117.             'id' => $reviewer->getReviewBatch()
  118.                 ->getId()
  119.         ]);
  120.     }
  121. }