slovocast/app/src/Controller/User/RegisterUserAction.php

39 lines
1.1 KiB
PHP

<?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);
}
}
}