<?php namespace Slovocast\Controller\User; use Psr\Http\Message\ResponseInterface as Response; use Slovocast\Controller\Controller; use Slovocast\Domain\Entity\User; use Slovocast\Domain\Repository\User\UserRepositoryInterface; use Odan\Session\SessionInterface; class RegisterUserAction extends Controller { public function __construct( protected UserRepositoryInterface $userRepository, protected SessionInterface $session ) { } public function handle(): Response { $requestData = $this->request->getParsedBody(); $user = User::fromArray([ 'email' => $requestData['email'], 'name' => $requestData['name'], 'password' => $requestData['password'], ]); $success = $this->userRepository->save($user); if ($success) { return $this->render('user/success.twig'); } else { $this->session ->getFlash() ->add('error', "Unable to register user."); return $this->render('user/register.twig')->withStatus(400); } } }