Implement permission adding

This commit is contained in:
Dennis Eichhorn 2018-09-21 23:16:35 +02:00
parent d24863651d
commit 8664e84d0d
10 changed files with 49 additions and 26 deletions

View File

@ -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);'
);

View File

@ -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,

View File

@ -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')

View File

@ -38,7 +38,7 @@ class AccountPermission extends PermissionAbstract
/**
* Constructor.
*
*
* @param int $group Group id
*
* @since 1.0.0

View File

@ -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'],

View File

@ -38,7 +38,7 @@ class GroupPermission extends PermissionAbstract
/**
* Constructor.
*
*
* @param int $group Group id
*
* @since 1.0.0

View File

@ -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'],

View File

@ -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();
}
}

View File

@ -46,19 +46,19 @@ echo $this->getData('nav')->render(); ?>
<span class="input">
<button type="button"><i class="fa fa-user"></i></button>
<input id="iUsername" name="name" type="text" value="<?= $this->printHtml($account->getName()); ?>" disabled>
</span>
</span>
<tr><td><label for="iName1"><?= $this->getHtml('Name1'); ?></label>
<tr><td>
<span class="input">
<button type="button"><i class="fa fa-user"></i></button>
<input id="iName1" name="name1" type="text" value="<?= $this->printHtml($account->getName1()); ?>" required>
</span>
</span>
<tr><td><label for="iName2"><?= $this->getHtml('Name2'); ?></label>
<tr><td>
<span class="input">
<button type="button"><i class="fa fa-user"></i></button>
<input id="iName2" name="name2" type="text" value="<?= $this->printHtml($account->getName2()); ?>">
</span>
</span>
<tr><td><label for="iName3"><?= $this->getHtml('Name3'); ?></label>
<tr><td>
<span class="input">
@ -169,7 +169,7 @@ echo $this->getData('nav')->render(); ?>
<section class="box wf-100">
<header><h1><?= $this->getHtml('Permissions'); ?></h1></header>
<div class="inner">
<form id="fAccountAddPermission" action="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/api/admin/group'); ?>" method="post">
<form id="fAccountAddPermission" action="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/api/admin/account/permission'); ?>" method="put">
<table class="layout wf-100">
<tbody>
<tr><td><label for="iPermissionUnit"><?= $this->getHtml('Unit'); ?></label>
@ -207,7 +207,7 @@ echo $this->getData('nav')->render(); ?>
<label for="iPermissionPermission"><?= $this->getHtml('Permission') ?></label>
</span>
<tr><td>
<input type="hidden" name="permissionref" value="<?= $this->printHtml($group->getId()); ?>">
<input type="hidden" name="permissionref" value="<?= $this->printHtml($account->getId()); ?>">
<input type="hidden" name="permissionowner" value="<?= \phpOMS\Account\PermissionOwner::GROUP ?>">
<input type="submit" value="<?= $this->getHtml('Add', 0, 0); ?>">
</table>

View File

@ -134,7 +134,7 @@ echo $this->getData('nav')->render(); ?>
<section class="box wf-100">
<header><h1><?= $this->getHtml('Permissions'); ?></h1></header>
<div class="inner">
<form id="fGroupAddPermission" action="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/api/admin/group'); ?>" method="post">
<form id="fGroupAddPermission" action="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/api/admin/group/permission'); ?>" method="put">
<table class="layout wf-100">
<tbody>
<tr><td><label for="iPermissionUnit"><?= $this->getHtml('Unit'); ?></label>