Skip to content

Commit 2ceb34c

Browse files
committed
Fix: Unique Validators by adding UpdatingId to requests
1 parent 388965e commit 2ceb34c

17 files changed

Lines changed: 66 additions & 63 deletions

src/Common/Validator/RequestValidator.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,6 @@ public function validate(Request $request, string $dtoClass, ?callable $beforeVa
3333
if (isset($routeParams['listId'])) {
3434
$routeParams['listId'] = (int) $routeParams['listId'];
3535
}
36-
if (isset($routeParams['templateId'])) {
37-
$routeParams['templateId'] = (int) $routeParams['templateId'];
38-
}
3936

4037
$data = array_merge($routeParams, $request->query->all(), $body ?? []);
4138

src/Identity/Controller/AdminAttributeDefinitionController.php

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,15 @@
2424
#[Route('/administrators/attributes', name: 'admin_attribute_definition_')]
2525
class AdminAttributeDefinitionController extends BaseController
2626
{
27-
private AdminAttributeDefinitionManager $definitionManager;
28-
private AdminAttributeDefinitionNormalizer $normalizer;
29-
private PaginatedDataProvider $paginatedDataProvider;
30-
3127
public function __construct(
3228
Authentication $authentication,
3329
RequestValidator $validator,
34-
AdminAttributeDefinitionManager $definitionManager,
35-
AdminAttributeDefinitionNormalizer $normalizer,
36-
PaginatedDataProvider $paginatedDataProvider,
30+
private readonly AdminAttributeDefinitionManager $definitionManager,
31+
private readonly AdminAttributeDefinitionNormalizer $normalizer,
32+
private readonly PaginatedDataProvider $paginatedDataProvider,
3733
private readonly EntityManagerInterface $entityManager,
3834
) {
3935
parent::__construct($authentication, $validator);
40-
$this->definitionManager = $definitionManager;
41-
$this->normalizer = $normalizer;
42-
$this->paginatedDataProvider = $paginatedDataProvider;
4336
}
4437

4538
#[Route('', name: 'create', methods: ['POST'])]

src/Identity/Controller/AdminAttributeValueController.php

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,15 @@
2525
#[Route('/administrators', name: 'admin_attribute_value_')]
2626
class AdminAttributeValueController extends BaseController
2727
{
28-
private AdminAttributeManager $attributeManager;
29-
private AdminAttributeValueNormalizer $normalizer;
30-
private PaginatedDataProvider $paginatedDataProvider;
31-
private EntityManagerInterface $entityManager;
32-
3328
public function __construct(
3429
Authentication $authentication,
3530
RequestValidator $validator,
36-
AdminAttributeManager $attributeManager,
37-
AdminAttributeValueNormalizer $normalizer,
38-
PaginatedDataProvider $paginatedDataProvider,
39-
EntityManagerInterface $entityManager,
31+
private readonly AdminAttributeManager $attributeManager,
32+
private readonly AdminAttributeValueNormalizer $normalizer,
33+
private readonly PaginatedDataProvider $paginatedDataProvider,
34+
private readonly EntityManagerInterface $entityManager,
4035
) {
4136
parent::__construct($authentication, $validator);
42-
$this->attributeManager = $attributeManager;
43-
$this->normalizer = $normalizer;
44-
$this->paginatedDataProvider = $paginatedDataProvider;
45-
$this->entityManager = $entityManager;
4637
}
4738

4839
#[Route(
@@ -280,13 +271,13 @@ public function getPaginated(
280271
$filter = (new AdminAttributeValueFilter())->setAdminId($admin->getId());
281272

282273
return $this->json(
283-
$this->paginatedDataProvider->getPaginatedList(
274+
data: $this->paginatedDataProvider->getPaginatedList(
284275
request: $request,
285276
normalizer:$this->normalizer,
286277
className: AdminAttributeValue::class,
287278
filter: $filter
288279
),
289-
Response::HTTP_OK
280+
status: Response::HTTP_OK
290281
);
291282
}
292283

src/Identity/Controller/AdministratorController.php

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,15 @@
2828
#[Route('/administrators', name: 'admin_')]
2929
class AdministratorController extends BaseController
3030
{
31-
private AdministratorManager $administratorManager;
32-
private AdministratorNormalizer $normalizer;
33-
private PaginatedDataProvider $paginatedProvider;
34-
3531
public function __construct(
3632
Authentication $authentication,
3733
RequestValidator $validator,
38-
AdministratorManager $administratorManager,
39-
AdministratorNormalizer $normalizer,
40-
PaginatedDataProvider $paginatedProvider,
34+
private readonly AdministratorManager $administratorManager,
35+
private readonly AdministratorNormalizer $normalizer,
36+
private readonly PaginatedDataProvider $paginatedProvider,
4137
private readonly EntityManagerInterface $entityManager,
4238
) {
4339
parent::__construct($authentication, $validator);
44-
$this->administratorManager = $administratorManager;
45-
$this->normalizer = $normalizer;
46-
$this->paginatedProvider = $paginatedProvider;
4740
}
4841

4942
#[Route('', name: 'get_list', methods: ['GET'])]
@@ -262,7 +255,13 @@ public function updateAdministrator(
262255
throw $this->createNotFoundException('Administrator not found.');
263256
}
264257
/** @var UpdateAdministratorRequest $updateRequest */
265-
$updateRequest = $this->validator->validate($request, UpdateAdministratorRequest::class);
258+
$updateRequest = $this->validator->validate(
259+
request: $request,
260+
dtoClass:UpdateAdministratorRequest::class,
261+
beforeValidation: static function (UpdateAdministratorRequest $dto) use ($administrator): void {
262+
$dto->setUpdatingId($administrator->getId());
263+
}
264+
);
266265
$this->administratorManager->updateAdministrator($administrator, $updateRequest->getDto());
267266
$this->entityManager->flush();
268267

src/Identity/Controller/PasswordResetController.php

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,13 @@
2424
#[Route('/password-reset', name: 'password_reset_')]
2525
class PasswordResetController extends BaseController
2626
{
27-
private PasswordManager $passwordManager;
28-
2927
public function __construct(
3028
Authentication $authentication,
3129
RequestValidator $validator,
32-
PasswordManager $passwordManager,
30+
private readonly PasswordManager $passwordManager,
3331
private readonly EntityManagerInterface $entityManager,
3432
) {
3533
parent::__construct($authentication, $validator);
36-
37-
$this->passwordManager = $passwordManager;
3834
}
3935

4036
#[Route('/request', name: 'request', methods: ['POST'])]
@@ -170,8 +166,8 @@ public function resetPassword(Request $request): JsonResponse
170166
$resetRequest = $this->validator->validate($request, ResetPasswordRequest::class);
171167

172168
$success = $this->passwordManager->updatePasswordWithToken(
173-
$resetRequest->token,
174-
$resetRequest->newPassword
169+
token: $resetRequest->token,
170+
newPassword: $resetRequest->newPassword
175171
);
176172
$this->entityManager->flush();
177173

src/Identity/Controller/SessionController.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,14 @@
3030
#[Route('/sessions', name: 'session_')]
3131
class SessionController extends BaseController
3232
{
33-
private SessionManager $sessionManager;
34-
3533
public function __construct(
3634
Authentication $authentication,
3735
RequestValidator $validator,
38-
SessionManager $sessionManager,
36+
private readonly SessionManager $sessionManager,
3937
private readonly EntityManagerInterface $entityManager,
4038
private readonly AdministratorNormalizer $normalizer,
4139
) {
4240
parent::__construct($authentication, $validator);
43-
44-
$this->sessionManager = $sessionManager;
4541
}
4642

4743
#[Route('', name: 'create', methods: ['POST'])]

src/Identity/Request/UpdateAdministratorRequest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@
5858
)]
5959
class UpdateAdministratorRequest implements RequestInterface
6060
{
61+
public ?int $updatingId = null;
62+
6163
#[Assert\Length(min: 3, max: 255)]
6264
#[UniqueLoginName]
6365
public ?string $loginName = null;
@@ -94,4 +96,9 @@ public function getDto(): UpdateAdministratorDto
9496
privileges: $this->privileges
9597
);
9698
}
99+
100+
public function setUpdatingId(?int $updatingId): void
101+
{
102+
$this->updatingId = $updatingId;
103+
}
97104
}

src/Identity/Validator/Constraint/UniqueLoginNameValidator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public function validate($value, Constraint $constraint): void
3737
$existingUser = $this->administratorRepository->findOneBy(['loginName' => $value]);
3838

3939
$dto = $this->context->getObject();
40-
$updatingId = $dto->administratorId ?? null;
40+
$updatingId = $dto->updatingId ?? null;
4141

4242
if ($existingUser && $existingUser->getId() !== $updatingId) {
4343
throw new ConflictHttpException('Login already exists.');

src/Messaging/Controller/TemplateController.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,13 @@ public function updateTemplates(
379379
}
380380

381381
/** @var UpdateTemplateRequest $templateRequest */
382-
$templateRequest = $this->validator->validate($request, UpdateTemplateRequest::class);
382+
$templateRequest = $this->validator->validate(
383+
request: $request,
384+
dtoClass: UpdateTemplateRequest::class,
385+
beforeValidation: static function (UpdateTemplateRequest $dto) use ($template): void {
386+
$dto->setUpdatingId($template->getId());
387+
}
388+
);
383389
$template = $this->templateManager->update(template: $template, updateTemplateDto: $templateRequest->getDto());
384390
$this->entityManager->flush();
385391

src/Messaging/Request/UpdateTemplateRequest.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
)]
5656
class UpdateTemplateRequest implements RequestInterface
5757
{
58-
public ?int $templateId = null;
58+
public ?int $updatingId = null;
5959

6060
#[Assert\NotBlank(normalizer: 'trim')]
6161
#[Assert\NotNull]
@@ -88,4 +88,9 @@ public function getDto(): UpdateTemplateDto
8888
listOrder: $this->listOrder ?? 0,
8989
);
9090
}
91+
92+
public function setUpdatingId(int $id): void
93+
{
94+
$this->updatingId = $id;
95+
}
9196
}

0 commit comments

Comments
 (0)