diff --git a/src/Admin/src/Form/CreateAdminForm.php b/src/Admin/src/Form/CreateAdminForm.php index 4381568..27477a9 100644 --- a/src/Admin/src/Form/CreateAdminForm.php +++ b/src/Admin/src/Form/CreateAdminForm.php @@ -13,6 +13,7 @@ use Laminas\Form\Element\Select; use Laminas\Form\Element\Submit; use Laminas\Form\Element\Text; +use Laminas\Form\Exception\ExceptionInterface; use Laminas\Session\Container; /** @@ -24,6 +25,7 @@ class CreateAdminForm extends AbstractForm { /** * @param array $options + * @throws ExceptionInterface */ public function __construct(?string $name = null, array $options = []) { @@ -41,16 +43,20 @@ public function __construct(?string $name = null, array $options = []) /** * @phpstan-param SelectDataType[] $roles + * @throws ExceptionInterface */ - public function setRoles(array $roles): self + public function setRoles(array $roles): static { - return $this->add( - (new MultiCheckbox('roles')) - ->setLabel('Select at least one role') - ->setValueOptions($roles) - ); + $checkbox = new MultiCheckbox('roles'); + $checkbox->setLabel('Select at least one role'); + $checkbox->setValueOptions($roles); + $this->add($checkbox); + return $this; } + /** + * @throws ExceptionInterface + */ public function init(): void { $this->add( @@ -76,12 +82,13 @@ public function init(): void (new Text('lastName')) ->setLabel('Lastname') ); - $this->add( - (new Select('status')) - ->setLabel('Account status') - ->setValueOptions(AdminStatusEnum::toArray()) - ->setAttribute('required', true) - ); + + $select = new Select('status'); + $select->setLabel('Account status'); + $select->setValueOptions(AdminStatusEnum::toArray()); + $select->setAttribute('required', true); + $this->add($select); + $this->add( (new Csrf('adminCreateCsrf')) ->setOptions([ diff --git a/src/Admin/src/Form/EditAdminForm.php b/src/Admin/src/Form/EditAdminForm.php index 0a1b893..32bdc2b 100644 --- a/src/Admin/src/Form/EditAdminForm.php +++ b/src/Admin/src/Form/EditAdminForm.php @@ -13,6 +13,7 @@ use Laminas\Form\Element\Select; use Laminas\Form\Element\Submit; use Laminas\Form\Element\Text; +use Laminas\Form\Exception\ExceptionInterface; use Laminas\Session\Container; /** @@ -24,6 +25,7 @@ class EditAdminForm extends AbstractForm { /** * @param array $options + * @throws ExceptionInterface */ public function __construct(?string $name = null, array $options = []) { @@ -41,16 +43,20 @@ public function __construct(?string $name = null, array $options = []) /** * @phpstan-param SelectDataType[] $roles + * @throws ExceptionInterface */ - public function setRoles(array $roles): self + public function setRoles(array $roles): static { - return $this->add( - (new MultiCheckbox('roles')) - ->setLabel('Select at least one role') - ->setValueOptions($roles) - ); + $checkbox = new MultiCheckbox('roles'); + $checkbox->setLabel('Select at least one role'); + $checkbox->setValueOptions($roles); + $this->add($checkbox); + return $this; } + /** + * @throws ExceptionInterface + */ public function init(): void { $this->add( @@ -69,12 +75,13 @@ public function init(): void (new Text('lastName')) ->setLabel('Lastname') ); - $this->add( - (new Select('status')) - ->setLabel('Account status') - ->setValueOptions(AdminStatusEnum::toArray()) - ->setAttribute('required', true) - ); + + $select = new Select('status'); + $select->setLabel('Account status'); + $select->setValueOptions(AdminStatusEnum::toArray()); + $select->setAttribute('required', true); + $this->add($select); + $this->add( (new Csrf('adminEditCsrf')) ->setOptions([ diff --git a/src/Admin/src/Handler/Admin/GetEditAdminFormHandler.php b/src/Admin/src/Handler/Admin/GetEditAdminFormHandler.php index d065fc9..57c109e 100644 --- a/src/Admin/src/Handler/Admin/GetEditAdminFormHandler.php +++ b/src/Admin/src/Handler/Admin/GetEditAdminFormHandler.php @@ -15,6 +15,7 @@ use Fig\Http\Message\StatusCodeInterface; use Laminas\Diactoros\Response\EmptyResponse; use Laminas\Diactoros\Response\HtmlResponse; +use Laminas\Form\Exception\ExceptionInterface; use Mezzio\Router\RouterInterface; use Mezzio\Template\TemplateRendererInterface; use Psr\Http\Message\ResponseInterface; @@ -46,6 +47,9 @@ public function __construct( ) { } + /** + * @throws ExceptionInterface + */ public function handle(ServerRequestInterface $request): ResponseInterface { try { @@ -59,7 +63,7 @@ public function handle(ServerRequestInterface $request): ResponseInterface /** @var AdminRole[] $adminRoles */ $adminRoles = $this->adminRoleService->getAdminRoleRepository()->findAll(); $adminRoles = array_map( - /** @return SelectDataType */ + /** @return SelectDataType */ fn (AdminRole $adminRole): array => [ 'label' => $adminRole->getName()->value, 'value' => $adminRole->getUuid()->toString(), @@ -68,12 +72,11 @@ public function handle(ServerRequestInterface $request): ResponseInterface $adminRoles ); - $this->editAdminForm - ->setAttribute( - 'action', - $this->router->generateUri('admin::edit-admin', ['uuid' => $admin->getUuid()->toString()]) - ) - ->bind($admin) + $this->editAdminForm->setAttribute( + 'action', + $this->router->generateUri('admin::edit-admin', ['uuid' => $admin->getUuid()->toString()]) + ); + $this->editAdminForm->bind($admin) ->setRoles($adminRoles); return new HtmlResponse( diff --git a/src/Admin/src/Handler/Admin/PostEditAdminHandler.php b/src/Admin/src/Handler/Admin/PostEditAdminHandler.php index ebb751a..772e415 100644 --- a/src/Admin/src/Handler/Admin/PostEditAdminHandler.php +++ b/src/Admin/src/Handler/Admin/PostEditAdminHandler.php @@ -20,6 +20,7 @@ use Fig\Http\Message\StatusCodeInterface; use Laminas\Diactoros\Response\EmptyResponse; use Laminas\Diactoros\Response\HtmlResponse; +use Laminas\Form\Exception\ExceptionInterface; use Mezzio\Router\RouterInterface; use Mezzio\Template\TemplateRendererInterface; use Psr\Http\Message\ResponseInterface; @@ -55,6 +56,9 @@ public function __construct( ) { } + /** + * @throws ExceptionInterface + */ public function handle(ServerRequestInterface $request): ResponseInterface { try { @@ -68,7 +72,7 @@ public function handle(ServerRequestInterface $request): ResponseInterface /** @var AdminRole[] $adminRoles */ $adminRoles = $this->adminRoleService->getAdminRoleRepository()->findAll(); $adminRoles = array_map( - /** @return SelectDataType */ + /** @return SelectDataType */ fn (AdminRole $adminRole): array => [ 'label' => $adminRole->getName()->value, 'value' => $adminRole->getUuid()->toString(), @@ -77,12 +81,11 @@ public function handle(ServerRequestInterface $request): ResponseInterface $adminRoles ); - $this->editAdminForm - ->setAttribute( - 'action', - $this->router->generateUri('admin::edit-admin', ['uuid' => $admin->getUuid()->toString()]) - ) - ->setRoles($adminRoles); + $this->editAdminForm->setAttribute( + 'action', + $this->router->generateUri('admin::edit-admin', ['uuid' => $admin->getUuid()->toString()]) + ); + $this->editAdminForm->setRoles($adminRoles); try { /** @var iterable> $data */ diff --git a/src/Admin/src/Service/AdminService.php b/src/Admin/src/Service/AdminService.php index 6b1c286..1c082f3 100644 --- a/src/Admin/src/Service/AdminService.php +++ b/src/Admin/src/Service/AdminService.php @@ -107,7 +107,7 @@ public function saveAdmin(array $data, ?Admin $admin = null): Admin if (array_key_exists('identity', $data) && $data['identity'] !== null && ! $admin->hasIdentity()) { $admin->setIdentity($data['identity']); } - if (array_key_exists('password', $data) && $data['password'] !== null) { + if (array_key_exists('password', $data) && $data['password'] !== null && $data['password'] !== '') { $admin->usePassword($data['password']); } if (array_key_exists('firstName', $data) && $data['firstName'] !== null) { diff --git a/src/User/src/Form/CreateUserForm.php b/src/User/src/Form/CreateUserForm.php index 7e6321d..08c0d9e 100644 --- a/src/User/src/Form/CreateUserForm.php +++ b/src/User/src/Form/CreateUserForm.php @@ -14,6 +14,7 @@ use Laminas\Form\Element\Select; use Laminas\Form\Element\Submit; use Laminas\Form\Element\Text; +use Laminas\Form\Exception\ExceptionInterface; use Laminas\Form\Fieldset; use Laminas\Session\Container; @@ -26,6 +27,7 @@ class CreateUserForm extends AbstractForm { /** * @param array $options + * @throws ExceptionInterface */ public function __construct(?string $name = null, array $options = []) { @@ -43,16 +45,20 @@ public function __construct(?string $name = null, array $options = []) /** * @phpstan-param SelectDataType[] $roles + * @throws ExceptionInterface */ - public function setRoles(array $roles): self + public function setRoles(array $roles): static { - return $this->add( - (new MultiCheckbox('roles')) - ->setLabel('Select at least one role') - ->setValueOptions($roles) - ); + $checkbox = new MultiCheckbox('roles'); + $checkbox->setLabel('Select at least one role'); + $checkbox->setValueOptions($roles); + $this->add($checkbox); + return $this; } + /** + * @throws ExceptionInterface + */ public function init(): void { $this @@ -68,11 +74,6 @@ public function init(): void (new Password('passwordConfirm')) ->setLabel('Password confirm') ->setAttribute('required', true) - )->add( - (new Select('status')) - ->setLabel('Account status') - ->setValueOptions(UserStatusEnum::toArray()) - ->setAttribute('required', true) )->add( (new Csrf('userCreateCsrf')) ->setOptions([ @@ -100,5 +101,11 @@ public function init(): void ->setAttribute('required', true) ) ); + + $select = new Select('status'); + $select->setLabel('Account status'); + $select->setValueOptions(UserStatusEnum::toArray()); + $select->setAttribute('required', true); + $this->add($select); } } diff --git a/src/User/src/Form/EditUserForm.php b/src/User/src/Form/EditUserForm.php index 5be4c5d..9769fd9 100644 --- a/src/User/src/Form/EditUserForm.php +++ b/src/User/src/Form/EditUserForm.php @@ -14,6 +14,7 @@ use Laminas\Form\Element\Select; use Laminas\Form\Element\Submit; use Laminas\Form\Element\Text; +use Laminas\Form\Exception\ExceptionInterface; use Laminas\Form\Fieldset; use Laminas\Session\Container; @@ -26,6 +27,7 @@ class EditUserForm extends AbstractForm { /** * @param array $options + * @throws ExceptionInterface */ public function __construct(?string $name = null, array $options = []) { @@ -43,16 +45,20 @@ public function __construct(?string $name = null, array $options = []) /** * @phpstan-param SelectDataType[] $roles + * @throws ExceptionInterface */ - public function setRoles(array $roles): self + public function setRoles(array $roles): static { - return $this->add( - (new MultiCheckbox('roles')) - ->setLabel('Select at least one role') - ->setValueOptions($roles) - ); + $checkbox = new MultiCheckbox('roles'); + $checkbox->setLabel('Select at least one role'); + $checkbox->setValueOptions($roles); + $this->add($checkbox); + return $this; } + /** + * @throws ExceptionInterface + */ public function init(): void { $this @@ -62,11 +68,6 @@ public function init(): void )->add( (new Password('passwordConfirm')) ->setLabel('Password confirm') - )->add( - (new Select('status')) - ->setLabel('Account status') - ->setValueOptions(UserStatusEnum::toArray()) - ->setAttribute('required', true) )->add( (new Csrf('userEditCsrf')) ->setOptions([ @@ -93,5 +94,11 @@ public function init(): void ->setLabel('Email') ) ); + + $select = new Select('status'); + $select->setLabel('Account status'); + $select->setValueOptions(UserStatusEnum::toArray()); + $select->setAttribute('required', true); + $this->add($select); } } diff --git a/src/User/src/Handler/GetEditUserFormHandler.php b/src/User/src/Handler/GetEditUserFormHandler.php index d09ca22..7356118 100644 --- a/src/User/src/Handler/GetEditUserFormHandler.php +++ b/src/User/src/Handler/GetEditUserFormHandler.php @@ -17,6 +17,7 @@ use Fig\Http\Message\StatusCodeInterface; use Laminas\Diactoros\Response\EmptyResponse; use Laminas\Diactoros\Response\HtmlResponse; +use Laminas\Form\Exception\ExceptionInterface; use Mezzio\Router\RouterInterface; use Mezzio\Template\TemplateRendererInterface; use Psr\Http\Message\ResponseInterface; @@ -51,6 +52,9 @@ public function __construct( ) { } + /** + * @throws ExceptionInterface + */ public function handle(ServerRequestInterface $request): ResponseInterface { try { @@ -64,7 +68,7 @@ public function handle(ServerRequestInterface $request): ResponseInterface /** @var UserRole[] $userRoles */ $userRoles = $this->userRoleService->getUserRoleRepository()->findAll(); $userRoles = array_map( - /** @return SelectDataType */ + /** @return SelectDataType */ fn (UserRole $userRole): array => [ 'label' => $userRole->getName()->value, 'value' => $userRole->getUuid()->toString(), @@ -84,8 +88,8 @@ public function handle(ServerRequestInterface $request): ResponseInterface ->setAttribute( 'action', $this->router->generateUri('user::edit-user', ['uuid' => $user->getUuid()->toString()]) - ) - ->bind($user) + ); + $this->editUserForm->bind($user) ->setRoles($userRoles); return new HtmlResponse( diff --git a/src/User/src/Handler/PostEditUserAvatarHandler.php b/src/User/src/Handler/PostEditUserAvatarHandler.php index 2c76651..fc1e810 100644 --- a/src/User/src/Handler/PostEditUserAvatarHandler.php +++ b/src/User/src/Handler/PostEditUserAvatarHandler.php @@ -20,6 +20,7 @@ use Fig\Http\Message\StatusCodeInterface; use Laminas\Diactoros\Response\EmptyResponse; use Laminas\Diactoros\Response\HtmlResponse; +use Laminas\Form\Exception\ExceptionInterface; use Mezzio\Router\RouterInterface; use Mezzio\Template\TemplateRendererInterface; use Psr\Http\Message\ResponseInterface; @@ -60,6 +61,9 @@ public function __construct( ) { } + /** + * @throws ExceptionInterface + */ public function handle(ServerRequestInterface $request): ResponseInterface { try { @@ -93,8 +97,8 @@ public function handle(ServerRequestInterface $request): ResponseInterface ->setAttribute( 'action', $this->router->generateUri('user::edit-user', ['uuid' => $user->getUuid()->toString()]) - ) - ->setRoles($userRoles); + ); + $this->editUserForm->setRoles($userRoles); try { $this->editUserAvatarForm->setData( array_merge((array) $request->getParsedBody(), $request->getUploadedFiles()) diff --git a/src/User/src/Handler/PostEditUserHandler.php b/src/User/src/Handler/PostEditUserHandler.php index 0b376fa..94b6a6c 100644 --- a/src/User/src/Handler/PostEditUserHandler.php +++ b/src/User/src/Handler/PostEditUserHandler.php @@ -22,6 +22,7 @@ use Fig\Http\Message\StatusCodeInterface; use Laminas\Diactoros\Response\EmptyResponse; use Laminas\Diactoros\Response\HtmlResponse; +use Laminas\Form\Exception\ExceptionInterface; use Mezzio\Router\RouterInterface; use Mezzio\Template\TemplateRendererInterface; use Psr\Http\Message\ResponseInterface; @@ -60,6 +61,9 @@ public function __construct( ) { } + /** + * @throws ExceptionInterface + */ public function handle(ServerRequestInterface $request): ResponseInterface { try { @@ -73,7 +77,7 @@ public function handle(ServerRequestInterface $request): ResponseInterface /** @var UserRole[] $userRoles */ $userRoles = $this->userRoleService->getUserRoleRepository()->findAll(); $userRoles = array_map( - /** @return SelectDataType */ + /** @return SelectDataType */ fn (UserRole $userRole): array => [ 'label' => $userRole->getName()->value, 'value' => $userRole->getUuid()->toString(), @@ -89,12 +93,11 @@ public function handle(ServerRequestInterface $request): ResponseInterface $this->router->generateUri('user::edit-user-avatar', ['uuid' => $user->getUuid()->toString()]) ); - $this->editUserForm - ->setAttribute( - 'action', - $this->router->generateUri('user::edit-user', ['uuid' => $user->getUuid()->toString()]) - ) - ->setRoles($userRoles); + $this->editUserForm->setAttribute( + 'action', + $this->router->generateUri('user::edit-user', ['uuid' => $user->getUuid()->toString()]) + ); + $this->editUserForm->setRoles($userRoles); try { /** @var iterable> $data */ diff --git a/src/User/src/Service/UserService.php b/src/User/src/Service/UserService.php index 4617ca8..4e474a5 100644 --- a/src/User/src/Service/UserService.php +++ b/src/User/src/Service/UserService.php @@ -167,7 +167,7 @@ public function saveUser(array $data, ?User $user = null): User if (array_key_exists('identity', $data) && $data['identity'] !== null && ! $user->hasIdentity()) { $user->setIdentity($data['identity']); } - if (array_key_exists('password', $data) && $data['password'] !== null) { + if (array_key_exists('password', $data) && $data['password'] !== null && $data['password'] !== '') { $user->usePassword($data['password']); } if (array_key_exists('hash', $data) && $data['hash'] !== null) {