MAPG-156 implement user deletion
This commit is contained in:
1 parent
8987b563dd
commit
b1ae7391e7
10 files changed
+83
-8
No files matched your search
@@ -1,10 +1,14 @@
|
||||
<?php namespace MapGuesser\Controller;
|
||||
|
||||
use MapGuesser\Database\Query\Select;
|
||||
use MapGuesser\Interfaces\Authorization\ISecured;
|
||||
use MapGuesser\Interfaces\Database\IResultSet;
|
||||
use MapGuesser\Interfaces\Request\IRequest;
|
||||
use MapGuesser\Interfaces\Response\IContent;
|
||||
use MapGuesser\PersistentData\PersistentDataManager;
|
||||
use MapGuesser\PersistentData\Model\User;
|
||||
use MapGuesser\PersistentData\Model\UserConfirmation;
|
||||
use MapGuesser\Repository\UserConfirmationRepository;
|
||||
use MapGuesser\Response\HtmlContent;
|
||||
use MapGuesser\Response\JsonContent;
|
||||
|
||||
@@ -14,10 +18,13 @@ class UserController implements ISecured
|
||||
|
||||
private PersistentDataManager $pdm;
|
||||
|
||||
private UserConfirmationRepository $userConfirmationRepository;
|
||||
|
||||
public function __construct(IRequest $request)
|
||||
{
|
||||
$this->request = $request;
|
||||
$this->pdm = new PersistentDataManager();
|
||||
$this->userConfirmationRepository = new UserConfirmationRepository();
|
||||
}
|
||||
|
||||
public function authorize(): bool
|
||||
@@ -35,7 +42,18 @@ class UserController implements ISecured
|
||||
$user = $this->request->user();
|
||||
|
||||
$data = ['user' => $user->toArray()];
|
||||
return new HtmlContent('account', $data);
|
||||
return new HtmlContent('account/account', $data);
|
||||
}
|
||||
|
||||
public function getDeleteAccount(): IContent
|
||||
{
|
||||
/**
|
||||
* @var User $user
|
||||
*/
|
||||
$user = $this->request->user();
|
||||
|
||||
$data = ['user' => $user->toArray()];
|
||||
return new HtmlContent('account/delete', $data);
|
||||
}
|
||||
|
||||
public function saveAccount(): IContent
|
||||
@@ -46,18 +64,18 @@ class UserController implements ISecured
|
||||
$user = $this->request->user();
|
||||
|
||||
if (!$user->checkPassword($this->request->post('password'))) {
|
||||
$data = ['error' => 'password_not_match'];
|
||||
$data = ['error' => ['errorText' => 'The given current password is wrong.']];
|
||||
return new JsonContent($data);
|
||||
}
|
||||
|
||||
if (strlen($this->request->post('password_new')) > 0) {
|
||||
if (strlen($this->request->post('password_new')) < 6) {
|
||||
$data = ['error' => 'password_too_short'];
|
||||
$data = ['error' => ['errorText' => 'The given new password is too short. Please choose a password that is at least 6 characters long!']];
|
||||
return new JsonContent($data);
|
||||
}
|
||||
|
||||
if ($this->request->post('password_new') !== $this->request->post('password_new_confirm')) {
|
||||
$data = ['error' => 'passwords_not_match'];
|
||||
$data = ['error' => ['errorText' => 'The given new passwords do not match.']];
|
||||
return new JsonContent($data);
|
||||
}
|
||||
|
||||
@@ -69,4 +87,30 @@ class UserController implements ISecured
|
||||
$data = ['success' => true];
|
||||
return new JsonContent($data);
|
||||
}
|
||||
|
||||
public function deleteAccount(): IContent
|
||||
{
|
||||
/**
|
||||
* @var User $user
|
||||
*/
|
||||
$user = $this->request->user();
|
||||
|
||||
if (!$user->checkPassword($this->request->post('password'))) {
|
||||
$data = ['error' => ['errorText' => 'The given current password is wrong.']];
|
||||
return new JsonContent($data);
|
||||
}
|
||||
|
||||
\Container::$dbConnection->startTransaction();
|
||||
|
||||
foreach ($this->userConfirmationRepository->getByUser($user) as $userConfirmation) {
|
||||
$this->pdm->deleteFromDb($userConfirmation);
|
||||
}
|
||||
|
||||
$this->pdm->deleteFromDb($user);
|
||||
|
||||
\Container::$dbConnection->commit();
|
||||
|
||||
$data = ['success' => true];
|
||||
return new JsonContent($data);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user