From 4e26b3918e33aaa3bbed780b1478598b7bbd30c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20D?= Date: Sun, 24 Feb 2019 22:15:42 +0100 Subject: [PATCH] * [ADD] Allow to set account's owner when creating or copying the account. Related #1264 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rubén D --- .../web/Controllers/AccountController.php | 5 +---- .../Helpers/Account/AccountHelper.php | 1 + .../views/account/account-permissions.inc | 4 +++- lib/SP/Services/Account/AccountService.php | 17 +++++++++++++++-- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/app/modules/web/Controllers/AccountController.php b/app/modules/web/Controllers/AccountController.php index bb06d189..5411bf6d 100644 --- a/app/modules/web/Controllers/AccountController.php +++ b/app/modules/web/Controllers/AccountController.php @@ -820,10 +820,7 @@ final class AccountController extends ControllerBase implements CrudControllerIn $form = new AccountForm($this->dic); $form->validate(Acl::ACCOUNT_CREATE); - $itemData = $form->getItemData(); - $itemData->userId = $this->userData->getId(); - - $accountId = $this->accountService->create($itemData); + $accountId = $this->accountService->create($form->getItemData()); $this->addCustomFieldsForItem(Acl::ACCOUNT, $accountId, $this->request); diff --git a/app/modules/web/Controllers/Helpers/Account/AccountHelper.php b/app/modules/web/Controllers/Helpers/Account/AccountHelper.php index 5bd94fa5..6951d76c 100644 --- a/app/modules/web/Controllers/Helpers/Account/AccountHelper.php +++ b/app/modules/web/Controllers/Helpers/Account/AccountHelper.php @@ -383,6 +383,7 @@ final class AccountHelper extends HelperBase $this->view->assign('otherUserGroupsView', $selectUserGroups->getItemsFromModelSelected($accountPermission->getUserGroupsView())); $this->view->assign('otherUserGroupsEdit', $selectUserGroups->getItemsFromModelSelected($accountPermission->getUserGroupsEdit())); + $this->view->assign('users', $selectUsers->getItemsFromModel()); $this->view->assign('userGroups', $selectUserGroups->getItemsFromModel()); $this->view->assign('tags', $selectTags->getItemsFromModel()); diff --git a/app/modules/web/themes/material-blue/views/account/account-permissions.inc b/app/modules/web/themes/material-blue/views/account/account-permissions.inc index 35e6d7e6..bfd65961 100644 --- a/app/modules/web/themes/material-blue/views/account/account-permissions.inc +++ b/app/modules/web/themes/material-blue/views/account/account-permissions.inc @@ -157,7 +157,9 @@ - getUserId())): ?> diff --git a/lib/SP/Services/Account/AccountService.php b/lib/SP/Services/Account/AccountService.php index f47e9ee3..80582955 100644 --- a/lib/SP/Services/Account/AccountService.php +++ b/lib/SP/Services/Account/AccountService.php @@ -177,10 +177,23 @@ final class AccountService extends Service implements AccountServiceInterface */ public function create(AccountRequest $accountRequest) { + $userData = $this->context->getUserData(); + $accountRequest->changePermissions = AccountAclService::getShowPermission( - $this->context->getUserData(), + $userData, $this->context->getUserProfile()); - $accountRequest->userGroupId = $accountRequest->userGroupId ?: $this->context->getUserData()->getUserGroupId(); + + if (empty($accountRequest->userGroupId) + || !$accountRequest->changePermissions + ) { + $accountRequest->userGroupId = $userData->getUserGroupId(); + } + + if (empty($accountRequest->userId) + || !$accountRequest->changePermissions + ) { + $accountRequest->userId = $userData->getId(); + } if (empty($accountRequest->key)) { $pass = $this->getPasswordEncrypted($accountRequest->pass);