diff --git a/Admin/Installer.php b/Admin/Installer.php index d6c6385..ed17332 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -50,6 +50,7 @@ class Installer extends InstallerAbstract 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'group` ( `group_id` int(11) NOT NULL AUTO_INCREMENT, `group_name` varchar(50) NOT NULL, + `group_status` int(11) NOT NULL, `group_desc` varchar(100) DEFAULT NULL, `group_created` datetime DEFAULT NULL, PRIMARY KEY (`group_id`) diff --git a/Admin/Routes/Web/Api.php b/Admin/Routes/Web/Api.php new file mode 100644 index 0000000..f14f21f --- /dev/null +++ b/Admin/Routes/Web/Api.php @@ -0,0 +1,62 @@ + [ + [ + 'dest' => '\Modules\Admin\Controller:apiSettingsSet', + 'verb' => RouteVerb::SET, + ], + [ + 'dest' => '\Modules\Admin\Controller:apiSettingsGet', + 'verb' => RouteVerb::GET, + ], + ], + + '^.*/api/admin/group.*$' => [ + [ + 'dest' => '\Modules\Admin\Controller:apiGroupCreate', + 'verb' => RouteVerb::PUT, + ], + [ + 'dest' => '\Modules\Admin\Controller:apiGroupUpdate', + 'verb' => RouteVerb::SET, + ], + [ + 'dest' => '\Modules\Admin\Controller:apiGroupDelete', + 'verb' => RouteVerb::DELETE, + ], + [ + 'dest' => '\Modules\Admin\Controller:apiGroupGet', + 'verb' => RouteVerb::GET, + ], + ], + + '^.*/api/admin/account.*$' => [ + [ + 'dest' => '\Modules\Admin\Controller:apiAccountCreate', + 'verb' => RouteVerb::PUT, + ], + [ + 'dest' => '\Modules\Admin\Controller:apiAccountUpdate', + 'verb' => RouteVerb::SET, + ], + [ + 'dest' => '\Modules\Admin\Controller:apiAccountDelete', + 'verb' => RouteVerb::DELETE, + ], + [ + 'dest' => '\Modules\Admin\Controller:apiAccountGet', + 'verb' => RouteVerb::GET, + ], + ], + + '^.*/api/admin/module/status.*$' => [ + [ + 'dest' => '\Modules\Admin\Controller:apiModuleStatusUpdate', + 'verb' => RouteVerb::SET, + ], + ], +]; diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php index 89aacc5..cb99b59 100644 --- a/Admin/Routes/Web/Backend.php +++ b/Admin/Routes/Web/Backend.php @@ -57,60 +57,4 @@ return [ 'verb' => RouteVerb::GET, ], ], - - '^.*/api/admin/settings.*$' => [ - [ - 'dest' => '\Modules\Admin\Controller:apiSettingsSet', - 'verb' => RouteVerb::SET, - ], - [ - 'dest' => '\Modules\Admin\Controller:apiSettingsGet', - 'verb' => RouteVerb::GET, - ], - ], - - '^.*/api/admin/group.*$' => [ - [ - 'dest' => '\Modules\Admin\Controller:apiGroupCreate', - 'verb' => RouteVerb::PUT, - ], - [ - 'dest' => '\Modules\Admin\Controller:apiGroupUpdate', - 'verb' => RouteVerb::SET, - ], - [ - 'dest' => '\Modules\Admin\Controller:apiGroupDelete', - 'verb' => RouteVerb::DELETE, - ], - [ - 'dest' => '\Modules\Admin\Controller:apiGroupGet', - 'verb' => RouteVerb::GET, - ], - ], - - '^.*/api/admin/account.*$' => [ - [ - 'dest' => '\Modules\Admin\Controller:apiAccountCreate', - 'verb' => RouteVerb::PUT, - ], - [ - 'dest' => '\Modules\Admin\Controller:apiAccountUpdate', - 'verb' => RouteVerb::SET, - ], - [ - 'dest' => '\Modules\Admin\Controller:apiAccountDelete', - 'verb' => RouteVerb::DELETE, - ], - [ - 'dest' => '\Modules\Admin\Controller:apiAccountGet', - 'verb' => RouteVerb::GET, - ], - ], - - '^.*/api/admin/module/status.*$' => [ - [ - 'dest' => '\Modules\Admin\Controller:apiModuleStatusUpdate', - 'verb' => RouteVerb::SET, - ], - ], ]; diff --git a/Controller.php b/Controller.php index 87d0c82..a31f8ce 100644 --- a/Controller.php +++ b/Controller.php @@ -15,10 +15,12 @@ */ namespace Modules\Admin; +use Model\Message\FormValidation; use Modules\Admin\Models\Account; use Modules\Admin\Models\AccountMapper; -use Modules\Admin\Models\GroupMapper; use Modules\Admin\Models\Group; +use Modules\Admin\Models\GroupMapper; +use phpOMS\Account\GroupStatus; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; use phpOMS\Module\ModuleAbstract; @@ -298,8 +300,25 @@ class Controller extends ModuleAbstract implements WebInterface public function apiGroupCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) { + $val = []; + if ( + $val['name'] = empty($request->getData('name')) + || $val['parent'] = ( + $request->getData('parent') !== null + && !is_numeric($request->getData('parent')) + ) + || $val['status'] = ( + $request->getData('status') === null + || !GroupStatus::isValidValue((int) $request->getData('status')) + ) + ) { + $response->set('group_create_validation', new FormValidation($val)); + + return; + } $group = new Group(); $group->setName($request->getData('name')); + $group->setName((int) $request->getData('status')); $group->setDescription($request->getData('desc')); GroupMapper::create($group); @@ -365,11 +384,11 @@ class Controller extends ModuleAbstract implements WebInterface $module = $request->getData('module'); $status = $request->getData('status'); - if(!$module || !$status) { + if (!$module || !$status) { // todo: create failure response } - switch($status) { + switch ($status) { case 'activate': $done = $this->app->moduleManager->activate($module); break; diff --git a/Models/GroupMapper.php b/Models/GroupMapper.php index 1f0a505..8f275a2 100644 --- a/Models/GroupMapper.php +++ b/Models/GroupMapper.php @@ -30,6 +30,7 @@ class GroupMapper extends DataMapperAbstract protected static $columns = [ 'group_id' => ['name' => 'group_id', 'type' => 'int', 'internal' => 'id'], 'group_name' => ['name' => 'group_name', 'type' => 'string', 'internal' => 'name'], + 'group_status' => ['name' => 'group_status', 'type' => 'int', 'internal' => 'status'], 'group_desc' => ['name' => 'group_desc', 'type' => 'string', 'internal' => 'description'], 'group_created' => ['name' => 'group_created', 'type' => 'DateTime', 'internal' => 'createdAt'], ];