39 lines
1.1 KiB
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);
|
|
}
|
|
}
|
|
}
|