diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php index 1bcbcb6..4709322 100644 --- a/src/Controller/UserController.php +++ b/src/Controller/UserController.php @@ -198,7 +198,45 @@ class UserController extends AbstractController $okay = true; } - return $this->render("user/user-new.html.twig", [ + return $this->render("user/user-edit.html.twig", [ + "ok" => $okay, + "form" => $form->createView() + ]); + } + + /** + * @Route("/settings", name="app_settings") + */ + public function settings(Request $request): Response + { + if (!$this->isGranted(User::ROLE_USER)) { + throw new AccessDeniedHttpException(); + } + + $user = $this->userService->getLoggedInUser(); + + + $form = $this->createForm(UserType::class, $user, [ + "password_optional" => true, + "roles" => false + ]); + + $okay = false; + + $form->handleRequest($request); + if ($form->isSubmitted() && $form->isValid()) { + $roles = $user->getRoles(); + + $user = $form->getData(); + + $user->setRoles($roles); + + $this->userService->update($user); + + $okay = true; + } + + return $this->render("user/settings.html.twig", [ "ok" => $okay, "form" => $form->createView() ]); diff --git a/src/Form/UserType.php b/src/Form/UserType.php index a8af7b1..aca5f30 100644 --- a/src/Form/UserType.php +++ b/src/Form/UserType.php @@ -20,14 +20,19 @@ class UserType extends AbstractType { $builder ->add("name", TextType::class) - ->add("email", EmailType::class) - ->add("roles", ChoiceType::class, [ + ->add("email", EmailType::class); + + if ($options["roles"]) { + $builder->add("roles", ChoiceType::class, [ "choices" => [ "Admin" => User::ROLE_ADMIN ], "multiple" => true, "expanded" => true, - ]) + ]); + } + + $builder ->add("newPassword", PasswordType::class, [ "always_empty" => true, "required" => !$options["password_optional"] @@ -39,7 +44,8 @@ class UserType extends AbstractType { $resolver->setDefaults([ "data_class" => User::class, - "password_optional" => false + "password_optional" => false, + "roles" => true, ]); } diff --git a/templates/user/settings.html.twig b/templates/user/settings.html.twig new file mode 100644 index 0000000..61293e6 --- /dev/null +++ b/templates/user/settings.html.twig @@ -0,0 +1,20 @@ +{% extends 'base.html.twig' %} + +{% block title %}Settings{% endblock %} +{% block stylesheets %} +{% endblock %} + +{% block javascripts %} + {% if ok %} + + {% endif %} +{% endblock %} + +{% block body %} +