Split controllers per application

This commit is contained in:
Dennis Eichhorn 2018-09-19 21:34:04 +02:00
parent 11bfeabd85
commit d24863651d
7 changed files with 601 additions and 393 deletions

View File

@ -5,7 +5,7 @@ use phpOMS\Router\RouteVerb;
return [
'^$' => [
[
'dest' => '\Modules\Admin\Controller:viewEmptyCommand',
'dest' => '\Modules\Admin\ConsoleController:viewEmptyCommand',
'verb' => RouteVerb::ANY,
],
],

View File

@ -3,24 +3,24 @@
use phpOMS\Router\RouteVerb;
use phpOMS\Account\PermissionType;
use Modules\Admin\Models\PermissionState;
use Modules\Admin\Controller;
use Modules\Admin\Controller\ApiController;
return [
'^.*/api/admin/settings.*$' => [
[
'dest' => '\Modules\Admin\Controller:apiSettingsSet',
'dest' => '\Modules\Admin\Controller\ApiController:apiSettingsSet',
'verb' => RouteVerb::SET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::MODIFY,
'state' => PermissionState::SETTINGS,
],
],
[
'dest' => '\Modules\Admin\Controller:apiSettingsGet',
'dest' => '\Modules\Admin\Controller\ApiController:apiSettingsGet',
'verb' => RouteVerb::GET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::READ,
'state' => PermissionState::SETTINGS,
],
@ -29,37 +29,37 @@ return [
'^.*/api/admin/group.*$' => [
[
'dest' => '\Modules\Admin\Controller:apiGroupCreate',
'dest' => '\Modules\Admin\Controller\ApiController:apiGroupCreate',
'verb' => RouteVerb::PUT,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::CREATE,
'state' => PermissionState::GROUP,
],
],
[
'dest' => '\Modules\Admin\Controller:apiGroupUpdate',
'dest' => '\Modules\Admin\Controller\ApiController:apiGroupUpdate',
'verb' => RouteVerb::SET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::MODIFY,
'state' => PermissionState::GROUP,
],
],
[
'dest' => '\Modules\Admin\Controller:apiGroupDelete',
'dest' => '\Modules\Admin\Controller\ApiController:apiGroupDelete',
'verb' => RouteVerb::DELETE,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::DELETE,
'state' => PermissionState::GROUP,
],
],
[
'dest' => '\Modules\Admin\Controller:apiGroupGet',
'dest' => '\Modules\Admin\Controller\ApiController:apiGroupGet',
'verb' => RouteVerb::GET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::READ,
'state' => PermissionState::GROUP,
],
@ -69,10 +69,10 @@ return [
// todo: the order of find and account is bad but needed for now. otherwise the admin/account.* also matches and we match two routes = bad
'^.*/api/admin/find/account.*$' => [
[
'dest' => '\Modules\Admin\Controller:apiAccountFind',
'dest' => '\Modules\Admin\Controller\ApiController:apiAccountFind',
'verb' => RouteVerb::GET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::READ,
'state' => PermissionState::ACCOUNT,
],
@ -80,10 +80,10 @@ return [
],
'^.*/api/admin/find/group.*$' => [
[
'dest' => '\Modules\Admin\Controller:apiGroupFind',
'dest' => '\Modules\Admin\Controller\ApiController:apiGroupFind',
'verb' => RouteVerb::GET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::READ,
'state' => PermissionState::ACCOUNT,
],
@ -92,37 +92,37 @@ return [
'^.*/api/admin/account.*$' => [
[
'dest' => '\Modules\Admin\Controller:apiAccountCreate',
'dest' => '\Modules\Admin\Controller\ApiController:apiAccountCreate',
'verb' => RouteVerb::PUT,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::CREATE,
'state' => PermissionState::ACCOUNT,
],
],
[
'dest' => '\Modules\Admin\Controller:apiAccountUpdate',
'dest' => '\Modules\Admin\Controller\ApiController:apiAccountUpdate',
'verb' => RouteVerb::SET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::MODIFY,
'state' => PermissionState::ACCOUNT,
],
],
[
'dest' => '\Modules\Admin\Controller:apiAccountDelete',
'dest' => '\Modules\Admin\Controller\ApiController:apiAccountDelete',
'verb' => RouteVerb::DELETE,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::DELETE,
'state' => PermissionState::ACCOUNT,
],
],
[
'dest' => '\Modules\Admin\Controller:apiAccountGet',
'dest' => '\Modules\Admin\Controller\ApiController:apiAccountGet',
'verb' => RouteVerb::GET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::READ,
'state' => PermissionState::ACCOUNT,
],
@ -131,10 +131,10 @@ return [
'^.*/api/admin/module/status.*$' => [
[
'dest' => '\Modules\Admin\Controller:apiModuleStatusUpdate',
'dest' => '\Modules\Admin\Controller\ApiController:apiModuleStatusUpdate',
'verb' => RouteVerb::SET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::MODIFY,
'state' => PermissionState::MODULE,
],
@ -143,10 +143,10 @@ return [
'^.*/api/admin/group/account.*$' => [
[
'dest' => '\Modules\Admin\Controller:apiAddAccountToGroup',
'dest' => '\Modules\Admin\Controller\ApiController:apiAddAccountToGroup',
'verb' => RouteVerb::PUT,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::MODIFY,
'state' => PermissionState::MODULE,
],
@ -154,10 +154,10 @@ return [
],
'^.*/api/admin/account/group.*$' => [
[
'dest' => '\Modules\Admin\Controller:apiAddGroupToAccount',
'dest' => '\Modules\Admin\Controller\ApiController:apiAddGroupToAccount',
'verb' => RouteVerb::PUT,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::MODIFY,
'state' => PermissionState::MODULE,
],
@ -166,10 +166,10 @@ return [
'^.*/api/admin/group/permission.*$' => [
[
'dest' => '\Modules\Admin\Controller:apiAddGroupPermission',
'dest' => '\Modules\Admin\Controller\ApiController:apiAddGroupPermission',
'verb' => RouteVerb::PUT,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::PERMISSION,
'state' => PermissionState::MODULE,
],
@ -177,10 +177,10 @@ return [
],
'^.*/api/admin/account/permission.*$' => [
[
'dest' => '\Modules\Admin\Controller:apiAddAccountPermission',
'dest' => '\Modules\Admin\Controller\ApiController:apiAddAccountPermission',
'verb' => RouteVerb::PUT,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::PERMISSION,
'state' => PermissionState::MODULE,
],

View File

@ -3,15 +3,15 @@
use phpOMS\Router\RouteVerb;
use phpOMS\Account\PermissionType;
use Modules\Admin\Models\PermissionState;
use Modules\Admin\Controller;
use Modules\Admin\Controller\BackendController;
return [
'^.*/backend/admin/settings/general.*$' => [
[
'dest' => '\Modules\Admin\Controller:viewSettingsGeneral',
'dest' => '\Modules\Admin\Controller\BackendController:viewSettingsGeneral',
'verb' => RouteVerb::GET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => BackendController::MODULE_NAME,
'type' => PermissionType::READ,
'state' => PermissionState::SETTINGS,
],
@ -19,10 +19,10 @@ return [
],
'^.*/backend/admin/account/list.*$' => [
[
'dest' => '\Modules\Admin\Controller:viewAccountList',
'dest' => '\Modules\Admin\Controller\BackendController:viewAccountList',
'verb' => RouteVerb::GET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => BackendController::MODULE_NAME,
'type' => PermissionType::READ,
'state' => PermissionState::ACCOUNT,
],
@ -30,10 +30,10 @@ return [
],
'^.*/backend/admin/account/settings.*$' => [
[
'dest' => '\Modules\Admin\Controller:viewAccountSettings',
'dest' => '\Modules\Admin\Controller\BackendController:viewAccountSettings',
'verb' => RouteVerb::GET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => BackendController::MODULE_NAME,
'type' => PermissionType::READ,
'state' => PermissionState::ACCOUNT,
],
@ -41,10 +41,10 @@ return [
],
'^.*/backend/admin/account/create.*$' => [
[
'dest' => '\Modules\Admin\Controller:viewAccountCreate',
'dest' => '\Modules\Admin\Controller\BackendController:viewAccountCreate',
'verb' => RouteVerb::GET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => BackendController::MODULE_NAME,
'type' => PermissionType::CREATE,
'state' => PermissionState::ACCOUNT,
],
@ -52,10 +52,10 @@ return [
],
'^.*/backend/admin/group/list.*$' => [
[
'dest' => '\Modules\Admin\Controller:viewGroupList',
'dest' => '\Modules\Admin\Controller\BackendController:viewGroupList',
'verb' => RouteVerb::GET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => BackendController::MODULE_NAME,
'type' => PermissionType::READ,
'state' => PermissionState::GROUP,
],
@ -63,10 +63,10 @@ return [
],
'^.*/backend/admin/group/settings.*$' => [
[
'dest' => '\Modules\Admin\Controller:viewGroupSettings',
'dest' => '\Modules\Admin\Controller\BackendController:viewGroupSettings',
'verb' => RouteVerb::GET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => BackendController::MODULE_NAME,
'type' => PermissionType::MODIFY,
'state' => PermissionState::GROUP,
],
@ -74,10 +74,10 @@ return [
],
'^.*/backend/admin/group/create.*$' => [
[
'dest' => '\Modules\Admin\Controller:viewGroupCreate',
'dest' => '\Modules\Admin\Controller\BackendController:viewGroupCreate',
'verb' => RouteVerb::GET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => BackendController::MODULE_NAME,
'type' => PermissionType::CREATE,
'state' => PermissionState::GROUP,
],
@ -85,10 +85,10 @@ return [
],
'^.*/backend/admin/module/list.*$' => [
[
'dest' => '\Modules\Admin\Controller:viewModuleList',
'dest' => '\Modules\Admin\Controller\BackendController:viewModuleList',
'verb' => RouteVerb::GET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => BackendController::MODULE_NAME,
'type' => PermissionType::READ,
'state' => PermissionState::MODULE,
],
@ -96,10 +96,10 @@ return [
],
'^.*/backend/admin/module/settings\?.*$' => [
[
'dest' => '\Modules\Admin\Controller:viewModuleProfile',
'dest' => '\Modules\Admin\Controller\BackendController:viewModuleProfile',
'verb' => RouteVerb::GET,
'permission' => [
'module' => Controller::MODULE_NAME,
'module' => BackendController::MODULE_NAME,
'type' => PermissionType::READ,
'state' => PermissionState::MODULE,
],

View File

@ -12,7 +12,7 @@
*/
declare(strict_types=1);
namespace Modules\Admin;
namespace Modules\Admin\Controller;
use Model\Message\FormValidation;
@ -57,344 +57,8 @@ use phpOMS\Account\PermissionOwner;
* @link http://website.orange-management.de
* @since 1.0.0
*/
final class Controller extends ModuleAbstract implements WebInterface
final class ApiController extends Controller
{
/**
* Module path.
*
* @var string
* @since 1.0.0
*/
public const MODULE_PATH = __DIR__;
/**
* Module version.
*
* @var string
* @since 1.0.0
*/
public const MODULE_VERSION = '1.0.0';
/**
* Module name.
*
* @var string
* @since 1.0.0
*/
public const MODULE_NAME = 'Admin';
/**
* Module id.
*
* @var int
* @since 1.0.0
*/
public const MODULE_ID = 1000100000;
/**
* Providing.
*
* @var string[]
* @since 1.0.0
*/
protected static $providing = [];
/**
* Dependencies.
*
* @var string[]
* @since 1.0.0
*/
protected static $dependencies = [];
/**
* Method which generates the general settings view.
*
* In this view general settings for the entire application can be seen and adjusted. Settings which can be modified
* here are localization, password, database, etc.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewSettingsGeneral(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$settings = $this->app->appSettings->get([
1000000001, 1000000002, 1000000003, 1000000004, 1000000005, 1000000006, 1000000007, 1000000008, 1000000009,
1000000010, 1000000011, 1000000012, 1000000013, 1000000014, 1000000015, 1000000016, 1000000017, 1000000018, 1000000019,
1000000020, 1000000021, 1000000022, 1000000023, 1000000024, 1000000025, 1000000026, 1000000027, 1000000028, 1000000029,
1000001001, 1000001002, 1000001003, 1000001004, 1000001005,
1000002001, 1000002002, 1000002003, 1000002004, 1000002005, 1000002006,
1000003001, 1000003002, 1000003003, 1000003004, 1000003005, 1000003006,
1000004001, 1000004002, 1000004003, 1000004004, 1000004005,
1000005001, 1000005002, 1000005003, 1000005004, 1000005005, 1000005006, 1000005007, 1000005008,
]);
$view->setTemplate('/Modules/Admin/Theme/Backend/settings-general');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response));
$view->setData('settings', $settings);
return $view;
}
/**
* Method which generates the general settings view.
*
* In this view general settings for the entire application can be seen and adjusted. Settings which can be modified
* here are localization, password, database, etc.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewEmptyCommand(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Console/empty-command');
return $view;
}
/**
* Method which generates the account list view.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewAccountList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/accounts-list');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response));
$view->setData('list:elements', AccountMapper::getNewest(50, null, RelationType::NONE));
$view->setData('list:count', 1);
return $view;
}
/**
* Method which generates the account view of a single account.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewAccountSettings(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/accounts-single');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response));
$view->addData('account', AccountMapper::get((int) $request->getData('id'), RelationType::ALL, null, 2));
$permissions = AccountPermissionMapper::getFor((int) $request->getData('id'), 'account');
if (!isset($permissions) || $permissions instanceof NullAccountPermission) {
$permissions = [];
} elseif (!is_array($permissions)) {
$permissions = [$permissions];
}
$view->addData('permissions', $permissions);
$accGrpSelector = new \Modules\Admin\Theme\Backend\Components\GroupTagSelector\GroupTagSelectorView($this->app, $request, $response);
$view->addData('grpSelector', $accGrpSelector);
return $view;
}
/**
* Method which generates the create account view.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewAccountCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/accounts-create');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response));
return $view;
}
/**
* Method which generates the group list view.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewGroupList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/groups-list');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response));
$view->setData('list:elements', GroupMapper::getAll(RelationType::NONE));
return $view;
}
/**
* Method which generates the group view of a single group.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewGroupSettings(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/groups-single');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response));
$view->addData('group', GroupMapper::get((int) $request->getData('id'), RelationType::ALL, null, 2));
$permissions = GroupPermissionMapper::getFor((int) $request->getData('id'), 'group');
if (!isset($permissions) || $permissions instanceof NullGroupPermission) {
$permissions = [];
} elseif (!is_array($permissions)) {
$permissions = [$permissions];
}
$view->addData('permissions', $permissions);
$accGrpSelector = new \Modules\Profile\Theme\Backend\Components\AccountGroupSelector\BaseView($this->app, $request, $response);
$view->addData('accGrpSelector', $accGrpSelector);
$editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app, $request, $response);
$view->addData('editor', $editor);
return $view;
}
/**
* Method which generates the group create view.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewGroupCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/groups-create');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response));
$editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app, $request, $response);
$view->addData('editor', $editor);
return $view;
}
/**
* Method which generates the module list view.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewModuleList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/modules-list');
return $view;
}
/**
* Method which generates the module profile view.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewModuleProfile(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/modules-single');
$id = $request->getData('id') ?? '';
$view->setData('modules', $this->app->moduleManager->getAllModules());
$view->setData('active', $this->app->moduleManager->getActiveModules());
$view->setData('installed', $installed = $this->app->moduleManager->getInstalledModules());
$view->setData('id', $id);
if (isset($installed[$id]) && ($path = \realpath(__DIR__ . '/../' . $id . '/info.json')) !== false) {
$info = new InfoManager($path);
$info->load();
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(
$info->getId(),
$request, $response
));
}
return $view;
}
/**
* Api method for getting settings
*

View File

@ -0,0 +1,349 @@
<?php
/**
* Orange Management
*
* PHP Version 7.2
*
* @package Modules\Admin
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://website.orange-management.de
*/
declare(strict_types=1);
namespace Modules\Admin\Controller;
use Model\Message\FormValidation;
use Modules\Admin\Models\Account;
use Modules\Admin\Models\AccountMapper;
use Modules\Admin\Models\AccountPermission;
use Modules\Admin\Models\AccountPermissionMapper;
use Modules\Admin\Models\NullAccountPermission;
use Modules\Admin\Models\Group;
use Modules\Admin\Models\GroupMapper;
use Modules\Admin\Models\GroupPermission;
use Modules\Admin\Models\GroupPermissionMapper;
use Modules\Admin\Models\NullGroupPermission;
use Modules\Admin\Models\PermissionState;
use Modules\Admin\Models\ModuleStatusUpdateType;
use phpOMS\Account\AccountStatus;
use phpOMS\Account\AccountType;
use phpOMS\Account\GroupStatus;
use phpOMS\Account\PermissionType;
use phpOMS\Message\RequestAbstract;
use phpOMS\Message\ResponseAbstract;
use phpOMS\Message\NotificationLevel;
use phpOMS\Message\Http\RequestStatusCode;
use phpOMS\Module\ModuleAbstract;
use phpOMS\Module\WebInterface;
use phpOMS\System\MimeType;
use phpOMS\Utils\Parser\Markdown\Markdown;
use phpOMS\Views\View;
use phpOMS\DataStorage\Database\RelationType;
use phpOMS\Module\InfoManager;
use phpOMS\Account\PermissionAbstract;
use phpOMS\Account\PermissionOwner;
/**
* Admin controller class.
*
* This class is responsible for the basic admin activities such as managing accounts, groups, permissions and modules.
*
* @package Modules\Admin
* @license OMS License 1.0
* @link http://website.orange-management.de
* @since 1.0.0
*/
final class BackendController extends Controller
{
/**
* Method which generates the general settings view.
*
* In this view general settings for the entire application can be seen and adjusted. Settings which can be modified
* here are localization, password, database, etc.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewSettingsGeneral(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$settings = $this->app->appSettings->get([
1000000001, 1000000002, 1000000003, 1000000004, 1000000005, 1000000006, 1000000007, 1000000008, 1000000009,
1000000010, 1000000011, 1000000012, 1000000013, 1000000014, 1000000015, 1000000016, 1000000017, 1000000018, 1000000019,
1000000020, 1000000021, 1000000022, 1000000023, 1000000024, 1000000025, 1000000026, 1000000027, 1000000028, 1000000029,
1000001001, 1000001002, 1000001003, 1000001004, 1000001005,
1000002001, 1000002002, 1000002003, 1000002004, 1000002005, 1000002006,
1000003001, 1000003002, 1000003003, 1000003004, 1000003005, 1000003006,
1000004001, 1000004002, 1000004003, 1000004004, 1000004005,
1000005001, 1000005002, 1000005003, 1000005004, 1000005005, 1000005006, 1000005007, 1000005008,
]);
$view->setTemplate('/Modules/Admin/Theme/Backend/settings-general');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response));
$view->setData('settings', $settings);
return $view;
}
/**
* Method which generates the general settings view.
*
* In this view general settings for the entire application can be seen and adjusted. Settings which can be modified
* here are localization, password, database, etc.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewEmptyCommand(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Console/empty-command');
return $view;
}
/**
* Method which generates the account list view.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewAccountList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/accounts-list');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response));
$view->setData('list:elements', AccountMapper::getNewest(50, null, RelationType::NONE));
$view->setData('list:count', 1);
return $view;
}
/**
* Method which generates the account view of a single account.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewAccountSettings(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/accounts-single');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response));
$view->addData('account', AccountMapper::get((int) $request->getData('id'), RelationType::ALL, null, 2));
$permissions = AccountPermissionMapper::getFor((int) $request->getData('id'), 'account');
if (!isset($permissions) || $permissions instanceof NullAccountPermission) {
$permissions = [];
} elseif (!is_array($permissions)) {
$permissions = [$permissions];
}
$view->addData('permissions', $permissions);
$accGrpSelector = new \Modules\Admin\Theme\Backend\Components\GroupTagSelector\GroupTagSelectorView($this->app, $request, $response);
$view->addData('grpSelector', $accGrpSelector);
return $view;
}
/**
* Method which generates the create account view.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewAccountCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/accounts-create');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response));
return $view;
}
/**
* Method which generates the group list view.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewGroupList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/groups-list');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response));
$view->setData('list:elements', GroupMapper::getAll(RelationType::NONE));
return $view;
}
/**
* Method which generates the group view of a single group.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewGroupSettings(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/groups-single');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response));
$view->addData('group', GroupMapper::get((int) $request->getData('id'), RelationType::ALL, null, 2));
$permissions = GroupPermissionMapper::getFor((int) $request->getData('id'), 'group');
if (!isset($permissions) || $permissions instanceof NullGroupPermission) {
$permissions = [];
} elseif (!is_array($permissions)) {
$permissions = [$permissions];
}
$view->addData('permissions', $permissions);
$accGrpSelector = new \Modules\Profile\Theme\Backend\Components\AccountGroupSelector\BaseView($this->app, $request, $response);
$view->addData('accGrpSelector', $accGrpSelector);
$editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app, $request, $response);
$view->addData('editor', $editor);
return $view;
}
/**
* Method which generates the group create view.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewGroupCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/groups-create');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response));
$editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app, $request, $response);
$view->addData('editor', $editor);
return $view;
}
/**
* Method which generates the module list view.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewModuleList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/modules-list');
return $view;
}
/**
* Method which generates the module profile view.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewModuleProfile(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/modules-single');
$id = $request->getData('id') ?? '';
$view->setData('modules', $this->app->moduleManager->getAllModules());
$view->setData('active', $this->app->moduleManager->getActiveModules());
$view->setData('installed', $installed = $this->app->moduleManager->getInstalledModules());
$view->setData('id', $id);
if (isset($installed[$id]) && ($path = \realpath(__DIR__ . '/../' . $id . '/info.json')) !== false) {
$info = new InfoManager($path);
$info->load();
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(
$info->getId(),
$request, $response
));
}
return $view;
}
}

View File

@ -0,0 +1,85 @@
<?php
/**
* Orange Management
*
* PHP Version 7.2
*
* @package Modules\Admin
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://website.orange-management.de
*/
declare(strict_types=1);
namespace Modules\Admin\Controller;
use Model\Message\FormValidation;
use Modules\Admin\Models\Account;
use Modules\Admin\Models\AccountMapper;
use Modules\Admin\Models\AccountPermission;
use Modules\Admin\Models\AccountPermissionMapper;
use Modules\Admin\Models\NullAccountPermission;
use Modules\Admin\Models\Group;
use Modules\Admin\Models\GroupMapper;
use Modules\Admin\Models\GroupPermission;
use Modules\Admin\Models\GroupPermissionMapper;
use Modules\Admin\Models\NullGroupPermission;
use Modules\Admin\Models\PermissionState;
use Modules\Admin\Models\ModuleStatusUpdateType;
use phpOMS\Account\AccountStatus;
use phpOMS\Account\AccountType;
use phpOMS\Account\GroupStatus;
use phpOMS\Account\PermissionType;
use phpOMS\Message\RequestAbstract;
use phpOMS\Message\ResponseAbstract;
use phpOMS\Message\NotificationLevel;
use phpOMS\Message\Http\RequestStatusCode;
use phpOMS\Module\ModuleAbstract;
use phpOMS\Module\WebInterface;
use phpOMS\System\MimeType;
use phpOMS\Utils\Parser\Markdown\Markdown;
use phpOMS\Views\View;
use phpOMS\DataStorage\Database\RelationType;
use phpOMS\Module\InfoManager;
use phpOMS\Account\PermissionAbstract;
use phpOMS\Account\PermissionOwner;
/**
* Admin controller class.
*
* This class is responsible for the basic admin activities such as managing accounts, groups, permissions and modules.
*
* @package Modules\Admin
* @license OMS License 1.0
* @link http://website.orange-management.de
* @since 1.0.0
*/
final class ConsoleController extends Controller
{
/**
* Method which generates the general settings view.
*
* In this view general settings for the entire application can be seen and adjusted. Settings which can be modified
* here are localization, password, database, etc.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return \Serializable Serializable web view
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewEmptyCommand(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Console/empty-command');
return $view;
}
}

110
Controller/Controller.php Normal file
View File

@ -0,0 +1,110 @@
<?php
/**
* Orange Management
*
* PHP Version 7.2
*
* @package Modules\Admin
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://website.orange-management.de
*/
declare(strict_types=1);
namespace Modules\Admin\Controller;
use Model\Message\FormValidation;
use Modules\Admin\Models\Account;
use Modules\Admin\Models\AccountMapper;
use Modules\Admin\Models\AccountPermission;
use Modules\Admin\Models\AccountPermissionMapper;
use Modules\Admin\Models\NullAccountPermission;
use Modules\Admin\Models\Group;
use Modules\Admin\Models\GroupMapper;
use Modules\Admin\Models\GroupPermission;
use Modules\Admin\Models\GroupPermissionMapper;
use Modules\Admin\Models\NullGroupPermission;
use Modules\Admin\Models\PermissionState;
use Modules\Admin\Models\ModuleStatusUpdateType;
use phpOMS\Account\AccountStatus;
use phpOMS\Account\AccountType;
use phpOMS\Account\GroupStatus;
use phpOMS\Account\PermissionType;
use phpOMS\Message\RequestAbstract;
use phpOMS\Message\ResponseAbstract;
use phpOMS\Message\NotificationLevel;
use phpOMS\Message\Http\RequestStatusCode;
use phpOMS\Module\ModuleAbstract;
use phpOMS\Module\WebInterface;
use phpOMS\System\MimeType;
use phpOMS\Utils\Parser\Markdown\Markdown;
use phpOMS\Views\View;
use phpOMS\DataStorage\Database\RelationType;
use phpOMS\Module\InfoManager;
use phpOMS\Account\PermissionAbstract;
use phpOMS\Account\PermissionOwner;
/**
* Admin controller class.
*
* This class is responsible for the basic admin activities such as managing accounts, groups, permissions and modules.
*
* @package Modules\Admin
* @license OMS License 1.0
* @link http://website.orange-management.de
* @since 1.0.0
*/
abstract class Controller extends ModuleAbstract implements WebInterface
{
/**
* Module path.
*
* @var string
* @since 1.0.0
*/
public const MODULE_PATH = __DIR__ . '/../';
/**
* Module version.
*
* @var string
* @since 1.0.0
*/
public const MODULE_VERSION = '1.0.0';
/**
* Module name.
*
* @var string
* @since 1.0.0
*/
public const MODULE_NAME = 'Admin';
/**
* Module id.
*
* @var int
* @since 1.0.0
*/
public const MODULE_ID = 1000100000;
/**
* Providing.
*
* @var string[]
* @since 1.0.0
*/
protected static $providing = [];
/**
* Dependencies.
*
* @var string[]
* @since 1.0.0
*/
protected static $dependencies = [];
}