From 4e4ae007c45e3f826898e760a79a81679910e04f Mon Sep 17 00:00:00 2001 From: Gnieark Date: Thu, 2 Jan 2020 21:18:47 +0100 Subject: [PATCH 1/2] wip --- src/Controller/SecurityController.php | 31 ++++++++++++++++++++-- templates/security/listUsers.html.twig | 36 ++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 templates/security/listUsers.html.twig diff --git a/src/Controller/SecurityController.php b/src/Controller/SecurityController.php index e0766d4..6aa2879 100644 --- a/src/Controller/SecurityController.php +++ b/src/Controller/SecurityController.php @@ -8,11 +8,14 @@ use Symfony\Component\Form\Extension\Core\Type\PasswordType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\EmailType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Security\Http\Authentication\AuthenticationUtils; use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface; use App\Entity\User; +use App\Service\Menus; +use Doctrine\ORM\EntityManagerInterface; class SecurityController extends AbstractController @@ -92,10 +95,34 @@ class SecurityController extends AbstractController } } - + private function getformCreateUser() + { + return $this->createFormBuilder() + ->add('email', EmailType::class,[]) + ->add('password', PasswordType::class, []) + ->add('display_name', TextType::class,[]) + ->add('roles', ChoiceType::class, [ + 'choices' => [ + 'USER' => false, + 'RESOURCE_MANAGER' => 'RESOURCE_MANAGER', + 'SUPER ADMIN' => 'SUPER_ADMIN', + ], + 'multiple' => false + ]) + ->add('save', SubmitType::class,[]) + ->getForm(); + } public function showUserManagePage() { - + $users = $this->getDoctrine() + ->getRepository(User::class) + ->findAll(); + $menus = new Menus(); + return $this->render('security/listUsers.html.twig', [ + "menus" => $menus->getMenus( $this->getUser() ), + "users" => $users, + "formCreateUser" => $this->getformCreateUser()->createView() + ]); } } diff --git a/templates/security/listUsers.html.twig b/templates/security/listUsers.html.twig new file mode 100644 index 0000000..e457b94 --- /dev/null +++ b/templates/security/listUsers.html.twig @@ -0,0 +1,36 @@ +{% extends 'base.html.twig' %} +{% block title %}Manage users{% endblock %} +{% block header %}

Manage users

{% endblock %} +{% block nav %}{% include 'menus.html.twig' %}{% endblock %} +{% block content %} + +
+

Create a new user

+ {{ form(formCreateUser) }} +
+ +
+

Users list

+ + + + + + + + + + + {% for u in users %} + + + + + + + {% endfor %} + + +
Displayed NameLogin (email)RolesActive
{{ u.displayName }} {{ u.email }}{{ u.roles|join(',') }}{{ u.active? 'Yes':'No' }}
+
+{% endblock %} \ No newline at end of file From c311f3a88e84159fe4ec3a06656ced8b99d9ef5b Mon Sep 17 00:00:00 2001 From: gnieark Date: Thu, 2 Jan 2020 22:27:51 +0100 Subject: [PATCH 2/2] can register user now --- config/routes.yaml | 2 +- src/Controller/SecurityController.php | 31 ++++++++++++++++++++++++-- templates/security/listUsers.html.twig | 1 + 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/config/routes.yaml b/config/routes.yaml index 3e96df1..9e1846f 100644 --- a/config/routes.yaml +++ b/config/routes.yaml @@ -21,4 +21,4 @@ register: users: path: /users controller: App\Controller\SecurityController::showUserManagePage - methods: GET \ No newline at end of file + methods: GET|POST \ No newline at end of file diff --git a/src/Controller/SecurityController.php b/src/Controller/SecurityController.php index 6aa2879..0b9cb92 100644 --- a/src/Controller/SecurityController.php +++ b/src/Controller/SecurityController.php @@ -112,16 +112,43 @@ class SecurityController extends AbstractController ->add('save', SubmitType::class,[]) ->getForm(); } - public function showUserManagePage() + + public function showUserManagePage(Request $request, UserPasswordEncoderInterface $passwordEncoder) { + + + $formCreateUser = $this->getformCreateUser(); + $formCreateUser->handleRequest($request); + + if ($formCreateUser->isSubmitted() && $formCreateUser->isValid()) { + $userValues = $formCreateUser->getData(); + + $user = new User(); + $user ->setEmail($userValues ["email"]) + ->setPassword( $passwordEncoder->encodePassword($user,$userValues ["password"]) ) + ->setDisplayName( $userValues ["display_name"] ) + ->setActive(true) + ->setRoles(array( $userValues["roles"] )); + + $entityManager = $this->getDoctrine()->getManager(); + $entityManager->persist($user); + $entityManager->flush(); + + //empty the form + $formCreateUser = $this->getformCreateUser(); + + } + $users = $this->getDoctrine() ->getRepository(User::class) ->findAll(); $menus = new Menus(); + + return $this->render('security/listUsers.html.twig', [ "menus" => $menus->getMenus( $this->getUser() ), "users" => $users, - "formCreateUser" => $this->getformCreateUser()->createView() + "formCreateUser" => $formCreateUser->createView() ]); } diff --git a/templates/security/listUsers.html.twig b/templates/security/listUsers.html.twig index e457b94..979ef12 100644 --- a/templates/security/listUsers.html.twig +++ b/templates/security/listUsers.html.twig @@ -7,6 +7,7 @@

Create a new user

{{ form(formCreateUser) }} +

{{ form_errors(formCreateUser) }}