diff --git a/Admin/Installer.php b/Admin/Installer.php index 01f9b00..905d6d8 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -197,7 +197,7 @@ class Installer extends InstallerAbstract `account_permission_account` int(11) NOT NULL, `account_permission_unit` int(11) DEFAULT NULL, `account_permission_app` int(11) DEFAULT NULL, - `account_permission_module` int(11) DEFAULT NULL, + `account_permission_module` varchar(255) DEFAULT NULL, `account_permission_from` int(11) DEFAULT NULL, `account_permission_type` int(11) DEFAULT NULL, `account_permission_element` int(11) DEFAULT NULL, @@ -289,7 +289,7 @@ class Installer extends InstallerAbstract { $sth = $dbPool->get()->con->prepare( 'INSERT INTO `' . $dbPool->get()->prefix . 'group` ( - `group_id`, `group_name`, `group_description`, `group_description_raw`, `group_status`, `group_created`) + `group_id`, `group_name`, `group_description`, `group_description_raw`, `group_status`, `group_created`) VALUES (:id, :name, :desc, :desc_raw, :status, :created);' ); diff --git a/Admin/Routes/Web/Api.php b/Admin/Routes/Web/Api.php index b23a7fe..47ecad8 100644 --- a/Admin/Routes/Web/Api.php +++ b/Admin/Routes/Web/Api.php @@ -27,7 +27,7 @@ return [ ], ], - '^.*/api/admin/group.*$' => [ + '^.*/api/admin/group$' => [ [ 'dest' => '\Modules\Admin\Controller\ApiController:apiGroupCreate', 'verb' => RouteVerb::PUT, @@ -90,7 +90,7 @@ return [ ], ], - '^.*/api/admin/account.*$' => [ + '^.*/api/admin/account$' => [ [ 'dest' => '\Modules\Admin\Controller\ApiController:apiAccountCreate', 'verb' => RouteVerb::PUT, diff --git a/Controller/ApiController.php b/Controller/ApiController.php index f9901cf..25fde2f 100644 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -97,7 +97,7 @@ final class ApiController extends Controller */ public function apiSettingsSet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { - if ($request->getData('settings') === null) { + if (empty($request->getData('settings'))) { $data = $request->getLike('(settings_)(.*)'); } else { $data = \json_decode((string) $request->getData('settings'), true); @@ -559,7 +559,7 @@ final class ApiController extends Controller $module = $request->getData('module'); $status = (int) $request->getData('status'); - if ($module === null || $status === null) { + if (empty($module) || empty($status)) { $response->set('module_stutus_update', null); $response->getHeader()->setStatusCode(RequestStatusCode::R_403); return; @@ -613,7 +613,7 @@ final class ApiController extends Controller $permission = $this->createPermissionFromRequest($request); $this->app->eventManager->trigger('PRE:Module:Admin-group-permission-create', '', $permission); - GroupMapper::create($permission); + GroupPermissionMapper::create($permission); $this->app->eventManager->trigger('POST:Module:Admin-group-permission-create', '', $permission); $response->getHeader()->set('Content-Type', MimeType::M_JSON, true); @@ -625,6 +625,29 @@ final class ApiController extends Controller ]); } + public function apiAddAccountPermission(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + if (!empty($val = $this->validatePermissionCreate($request))) { + $response->set('permission_create', new FormValidation($val)); + + return; + } + + $permission = $this->createPermissionFromRequest($request); + + $this->app->eventManager->trigger('PRE:Module:Admin-account-permission-create', '', $permission); + AccountPermissionMapper::create($permission); + $this->app->eventManager->trigger('POST:Module:Admin-account-permission-create', '', $permission); + + $response->getHeader()->set('Content-Type', MimeType::M_JSON, true); + $response->set($request->getUri()->__toString(), [ + 'status' => NotificationLevel::OK, + 'title' => 'Account', + 'message' => 'Account permission successfully created.', + 'response' => $permission->jsonSerialize() + ]); + } + /** * Validate permission create request * @@ -637,7 +660,7 @@ final class ApiController extends Controller private function validatePermissionCreate(RequestAbstract $request) : array { $val = []; - if (($val['permissionowner'] = !PermissionOwner::isValidValue($request->getData('permissionowner'))) + if (($val['permissionowner'] = !PermissionOwner::isValidValue((int) $request->getData('permissionowner'))) || ($val['permissionref'] = !\is_numeric($request->getData('permissionref'))) ) { return $val; @@ -657,13 +680,13 @@ final class ApiController extends Controller */ public function createPermissionFromRequest(RequestAbstract $request) : PermissionAbstract { - $permission = $request->getData('permissionowner') === PermissionOwner::GROUP ? new GroupPermission((int) $request->getData('permissionref')) : new AccountPermission((int) $request->getData('permissionref')); - $permission->setUnit($request->getData('permissionunit') === null ? null : (int) $request->getData('permissionunit')); - $permission->setApp($request->getData('permissionapp') === null ? null : (string) $request->getData('permissionapp')); - $permission->setModule($request->getData('permissionmodule') === null ? null : (string) $request->getData('permissionmodule')); - $permission->setType($request->getData('permissiontype') === null ? null : (int) $request->getData('permissiontype')); - $permission->setElement($request->getData('permissionelement') === null ? null : (int) $request->getData('permissionelement')); - $permission->setComponent($request->getData('permissioncomponent') === null ? null : (int) $request->getData('permissioncomponent')); + $permission = ((int) $request->getData('permissionowner')) === PermissionOwner::GROUP ? new GroupPermission((int) $request->getData('permissionref')) : new AccountPermission((int) $request->getData('permissionref')); + $permission->setUnit(empty($request->getData('permissionunit')) ? null : (int) $request->getData('permissionunit')); + $permission->setApp(empty($request->getData('permissionapp')) ? null : (string) $request->getData('permissionapp')); + $permission->setModule(empty($request->getData('permissionmodule')) ? null : (string) $request->getData('permissionmodule')); + $permission->setType(empty($request->getData('permissiontype')) ? null : (int) $request->getData('permissiontype')); + $permission->setElement(empty($request->getData('permissionelement')) ? null : (int) $request->getData('permissionelement')); + $permission->setComponent(empty($request->getData('permissioncomponent')) ? null : (int) $request->getData('permissioncomponent')); $permission->setPermission( (int) $request->getData('permissioncreate') | (int) $request->getData('permissionread') diff --git a/Models/AccountPermission.php b/Models/AccountPermission.php index 04269f0..21c457a 100644 --- a/Models/AccountPermission.php +++ b/Models/AccountPermission.php @@ -38,7 +38,7 @@ class AccountPermission extends PermissionAbstract /** * Constructor. - * + * * @param int $group Group id * * @since 1.0.0 diff --git a/Models/AccountPermissionMapper.php b/Models/AccountPermissionMapper.php index 7bf90d3..b0358c3 100644 --- a/Models/AccountPermissionMapper.php +++ b/Models/AccountPermissionMapper.php @@ -38,7 +38,7 @@ class AccountPermissionMapper extends DataMapperAbstract 'account_permission_account' => ['name' => 'account_permission_account', 'type' => 'int', 'internal' => 'account'], 'account_permission_unit' => ['name' => 'account_permission_unit', 'type' => 'int', 'internal' => 'unit'], 'account_permission_app' => ['name' => 'account_permission_app', 'type' => 'int', 'internal' => 'app'], - 'account_permission_module' => ['name' => 'account_permission_module', 'type' => 'int', 'internal' => 'module'], + 'account_permission_module' => ['name' => 'account_permission_module', 'type' => 'string', 'internal' => 'module'], 'account_permission_from' => ['name' => 'account_permission_from', 'type' => 'int', 'internal' => 'from'], 'account_permission_type' => ['name' => 'account_permission_type', 'type' => 'int', 'internal' => 'type'], 'account_permission_element' => ['name' => 'account_permission_element', 'type' => 'int', 'internal' => 'element'], diff --git a/Models/GroupPermission.php b/Models/GroupPermission.php index d9983bb..6412e9b 100644 --- a/Models/GroupPermission.php +++ b/Models/GroupPermission.php @@ -38,7 +38,7 @@ class GroupPermission extends PermissionAbstract /** * Constructor. - * + * * @param int $group Group id * * @since 1.0.0 diff --git a/Models/GroupPermissionMapper.php b/Models/GroupPermissionMapper.php index bbbe6c7..e215d05 100644 --- a/Models/GroupPermissionMapper.php +++ b/Models/GroupPermissionMapper.php @@ -38,7 +38,7 @@ class GroupPermissionMapper extends DataMapperAbstract 'group_permission_group' => ['name' => 'group_permission_group', 'type' => 'int', 'internal' => 'group'], 'group_permission_unit' => ['name' => 'group_permission_unit', 'type' => 'int', 'internal' => 'unit'], 'group_permission_app' => ['name' => 'group_permission_app', 'type' => 'string', 'internal' => 'app'], - 'group_permission_module' => ['name' => 'group_permission_module', 'type' => 'int', 'internal' => 'module'], + 'group_permission_module' => ['name' => 'group_permission_module', 'type' => 'string', 'internal' => 'module'], 'group_permission_from' => ['name' => 'group_permission_from', 'type' => 'int', 'internal' => 'from'], 'group_permission_type' => ['name' => 'group_permission_type', 'type' => 'int', 'internal' => 'type'], 'group_permission_element' => ['name' => 'group_permission_element', 'type' => 'int', 'internal' => 'element'], diff --git a/Theme/Backend/Components/GroupTagSelector/GroupTagSelectorView.php b/Theme/Backend/Components/GroupTagSelector/GroupTagSelectorView.php index 973992e..483a545 100644 --- a/Theme/Backend/Components/GroupTagSelector/GroupTagSelectorView.php +++ b/Theme/Backend/Components/GroupTagSelector/GroupTagSelectorView.php @@ -48,7 +48,7 @@ class GroupTagSelectorView extends View $this->id = $data[0]; $this->isRequired = $data[1] ?? false; $this->getData('group-selector-popup')->setId($this->id); - + return parent::render(); } } diff --git a/Theme/Backend/accounts-single.tpl.php b/Theme/Backend/accounts-single.tpl.php index 9f6faa1..0a8d543 100644 --- a/Theme/Backend/accounts-single.tpl.php +++ b/Theme/Backend/accounts-single.tpl.php @@ -46,19 +46,19 @@ echo $this->getData('nav')->render(); ?> - +