mirror of
https://github.com/Karaka-Management/Build.git
synced 2026-01-11 11:48:40 +00:00
cleanup
This commit is contained in:
parent
33566670b7
commit
ddeae56af9
541
gdfSetup.php
541
gdfSetup.php
|
|
@ -1,541 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Remove old install and setup database.
|
||||
*
|
||||
* This script is usefull when you want to manually install the app without resetting an old database/app or new empty database.
|
||||
*/
|
||||
ini_set('memory_limit', '2048M');
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
require_once __DIR__ . '/../phpOMS/Autoloader.php';
|
||||
|
||||
use Install\WebApplication;
|
||||
use Model\CoreSettings;
|
||||
use phpOMS\ApplicationAbstract;
|
||||
use phpOMS\Dispatcher\Dispatcher;
|
||||
use phpOMS\Account\Account;
|
||||
use phpOMS\Account\AccountManager;
|
||||
use phpOMS\Account\PermissionType;
|
||||
use phpOMS\DataStorage\Database\DatabasePool;
|
||||
use phpOMS\DataStorage\Session\HttpSession;
|
||||
use Modules\Admin\Models\AccountPermission;
|
||||
use phpOMS\Message\Http\Request;
|
||||
use phpOMS\Event\EventManager;
|
||||
use phpOMS\Message\Http\RequestMethod;
|
||||
use phpOMS\Message\Http\Response;
|
||||
use phpOMS\Module\ModuleManager;
|
||||
use phpOMS\Router\WebRouter;
|
||||
use phpOMS\Uri\Http;
|
||||
use phpOMS\Utils\TestUtils;
|
||||
use Model\Settings;
|
||||
|
||||
$config = [
|
||||
'db' => [
|
||||
'core' => [
|
||||
'masters' => [
|
||||
'admin' => [
|
||||
'db' => 'mysql', /* db type */
|
||||
'host' => '127.0.0.1', /* db host address */
|
||||
'port' => '3306', /* db host port */
|
||||
'login' => 'root', /* db login name */
|
||||
'password' => 'root', /* db login password */
|
||||
'database' => 'oms', /* db name */
|
||||
'prefix' => 'oms_', /* db table prefix */
|
||||
'weight' => 1000, /* db table prefix */
|
||||
],
|
||||
'insert' => [
|
||||
'db' => 'mysql', /* db type */
|
||||
'host' => '127.0.0.1', /* db host address */
|
||||
'port' => '3306', /* db host port */
|
||||
'login' => 'root', /* db login name */
|
||||
'password' => 'root', /* db login password */
|
||||
'database' => 'oms', /* db name */
|
||||
'prefix' => 'oms_', /* db table prefix */
|
||||
'weight' => 1000, /* db table prefix */
|
||||
],
|
||||
'select' => [
|
||||
'db' => 'mysql', /* db type */
|
||||
'host' => '127.0.0.1', /* db host address */
|
||||
'port' => '3306', /* db host port */
|
||||
'login' => 'root', /* db login name */
|
||||
'password' => 'root', /* db login password */
|
||||
'database' => 'oms', /* db name */
|
||||
'prefix' => 'oms_', /* db table prefix */
|
||||
'weight' => 1000, /* db table prefix */
|
||||
],
|
||||
'update' => [
|
||||
'db' => 'mysql', /* db type */
|
||||
'host' => '127.0.0.1', /* db host address */
|
||||
'port' => '3306', /* db host port */
|
||||
'login' => 'root', /* db login name */
|
||||
'password' => 'root', /* db login password */
|
||||
'database' => 'oms', /* db name */
|
||||
'prefix' => 'oms_', /* db table prefix */
|
||||
'weight' => 1000, /* db table prefix */
|
||||
],
|
||||
'delete' => [
|
||||
'db' => 'mysql', /* db type */
|
||||
'host' => '127.0.0.1', /* db host address */
|
||||
'port' => '3306', /* db host port */
|
||||
'login' => 'root', /* db login name */
|
||||
'password' => 'root', /* db login password */
|
||||
'database' => 'oms', /* db name */
|
||||
'prefix' => 'oms_', /* db table prefix */
|
||||
'weight' => 1000, /* db table prefix */
|
||||
],
|
||||
'schema' => [
|
||||
'db' => 'mysql', /* db type */
|
||||
'host' => '127.0.0.1', /* db host address */
|
||||
'port' => '3306', /* db host port */
|
||||
'login' => 'root', /* db login name */
|
||||
'password' => 'root', /* db login password */
|
||||
'database' => 'oms', /* db name */
|
||||
'prefix' => 'oms_', /* db table prefix */
|
||||
'weight' => 1000, /* db table prefix */
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'cache' => [
|
||||
'redis' => [
|
||||
'db' => 1,
|
||||
'host' => '127.0.0.1',
|
||||
'port' => 6379,
|
||||
],
|
||||
'memcached' => [
|
||||
'host' => '127.0.0.1',
|
||||
'port' => 11211,
|
||||
],
|
||||
],
|
||||
'log' => [
|
||||
'file' => [
|
||||
'path' => __DIR__ . '/Logs',
|
||||
],
|
||||
],
|
||||
'page' => [
|
||||
'root' => '/',
|
||||
'https' => false,
|
||||
],
|
||||
'app' => [
|
||||
'path' => __DIR__,
|
||||
],
|
||||
'socket' => [
|
||||
'master' => [
|
||||
'host' => '127.0.0.1',
|
||||
'limit' => 300,
|
||||
'port' => 4310,
|
||||
],
|
||||
],
|
||||
'language' => [
|
||||
'en',
|
||||
],
|
||||
'apis' => [
|
||||
]
|
||||
];
|
||||
|
||||
// Reset database
|
||||
$db = new \PDO($config['db']['core']['masters']['admin']['db'] . ':host=' .
|
||||
$config['db']['core']['masters']['admin']['host'],
|
||||
$config['db']['core']['masters']['admin']['login'],
|
||||
$config['db']['core']['masters']['admin']['password']
|
||||
);
|
||||
$db->exec('DROP DATABASE IF EXISTS ' . $config['db']['core']['masters']['admin']['database']);
|
||||
$db->exec('CREATE DATABASE IF NOT EXISTS ' . $config['db']['core']['masters']['admin']['database']);
|
||||
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
$request->setMethod(RequestMethod::POST);
|
||||
|
||||
$request->setData('dbhost', $config['db']['core']['masters']['admin']['host']);
|
||||
$request->setData('dbtype', $config['db']['core']['masters']['admin']['db']);
|
||||
$request->setData('dbport', $config['db']['core']['masters']['admin']['port']);
|
||||
$request->setData('dbprefix', $config['db']['core']['masters']['admin']['prefix']);
|
||||
$request->setData('dbname', $config['db']['core']['masters']['admin']['database']);
|
||||
$request->setData('schemauser', $config['db']['core']['masters']['admin']['login']);
|
||||
$request->setData('schemapassword', $config['db']['core']['masters']['admin']['password']);
|
||||
$request->setData('createuser', $config['db']['core']['masters']['admin']['login']);
|
||||
$request->setData('createpassword', $config['db']['core']['masters']['admin']['password']);
|
||||
$request->setData('selectuser', $config['db']['core']['masters']['admin']['login']);
|
||||
$request->setData('selectpassword', $config['db']['core']['masters']['admin']['password']);
|
||||
$request->setData('updateuser', $config['db']['core']['masters']['admin']['login']);
|
||||
$request->setData('updatepassword', $config['db']['core']['masters']['admin']['password']);
|
||||
$request->setData('deleteuser', $config['db']['core']['masters']['admin']['login']);
|
||||
$request->setData('deletepassword', $config['db']['core']['masters']['admin']['password']);
|
||||
|
||||
$request->setData('orgname', 'MANI Inc.');
|
||||
$request->setData('adminname', 'admin');
|
||||
$request->setData('adminpassword', 'orange');
|
||||
$request->setData('adminemail', 'admin@oms.com');
|
||||
$request->setData('domain', '127.0.0.1');
|
||||
$request->setData('websubdir', $config['page']['root']);
|
||||
$request->setData('defaultlang', 'en');
|
||||
|
||||
WebApplication::installRequest($request, $response);
|
||||
|
||||
// Setup for api calls
|
||||
$app = new class() extends ApplicationAbstract
|
||||
{
|
||||
protected string $appName = 'Api';
|
||||
};
|
||||
|
||||
$app->dbPool = new DatabasePool();
|
||||
$app->dbPool->create('admin', $config['db']['core']['masters']['admin']);
|
||||
$app->dbPool->create('select', $config['db']['core']['masters']['select']);
|
||||
$app->dbPool->create('update', $config['db']['core']['masters']['update']);
|
||||
$app->dbPool->create('insert', $config['db']['core']['masters']['insert']);
|
||||
$app->dbPool->create('schema', $config['db']['core']['masters']['schema']);
|
||||
|
||||
$app->orgId = 1;
|
||||
$app->appName = 'Backend';
|
||||
$app->accountManager = new AccountManager(new HttpSession());
|
||||
$app->appSettings = new CoreSettings($app->dbPool->get());
|
||||
$app->moduleManager = new ModuleManager($app, __DIR__ . '/../Modules');
|
||||
$app->dispatcher = new Dispatcher($app);
|
||||
$app->eventManager = new EventManager($app->dispatcher);
|
||||
$app->eventManager->importFromFile(__DIR__ . '/../Web/Api/Hooks.php');
|
||||
|
||||
$account = new Account();
|
||||
TestUtils::setMember($account, 'id', 1);
|
||||
|
||||
$permission = new AccountPermission();
|
||||
$permission->setUnit(2);
|
||||
$permission->setApp('backend');
|
||||
$permission->setPermission(
|
||||
PermissionType::READ
|
||||
| PermissionType::CREATE
|
||||
| PermissionType::MODIFY
|
||||
| PermissionType::DELETE
|
||||
| PermissionType::PERMISSION
|
||||
);
|
||||
|
||||
$account->addPermission($permission);
|
||||
|
||||
$app->accountManager->add($account);
|
||||
$app->router = new WebRouter();
|
||||
|
||||
/**
|
||||
* Setup additional units
|
||||
*/
|
||||
$module = $app->moduleManager->get('Organization');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('name', 'GDF GmbH');
|
||||
$request->setData('parent', 1);
|
||||
$request->setData('status', 1);
|
||||
|
||||
$module->apiUnitCreate($request, $response);
|
||||
|
||||
/**
|
||||
* Change app settings
|
||||
*/
|
||||
$module = $app->moduleManager->get('Admin');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('settings', \json_encode([Settings::DEFAULT_ORGANIZATION => '2']));
|
||||
|
||||
$module->apiSettingsSet($request, $response);
|
||||
|
||||
/**
|
||||
* Install modules
|
||||
*/
|
||||
$module = $app->moduleManager->get('Admin');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('status', 3);
|
||||
|
||||
// Helper
|
||||
$request->setData('module', 'Helper');
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// Search
|
||||
$request->setData('module', 'Search');
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// Dashboard
|
||||
$request->setData('module', 'Dashboard');
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
|
||||
/**
|
||||
* Setup groups
|
||||
*/
|
||||
$module = $app->moduleManager->get('Admin');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
use Modules\Admin\Models\GroupMapper;
|
||||
use phpOMS\Account\GroupStatus;
|
||||
|
||||
$groups = [
|
||||
['name' => 'Management', 'permissions' => []],
|
||||
['name' => 'Executive', 'permissions' => []],
|
||||
['name' => 'R&D', 'permissions' => []],
|
||||
['name' => 'Sales', 'permissions' => []],
|
||||
['name' => 'Production', 'permissions' => []],
|
||||
['name' => 'Secretariat', 'permissions' => []],
|
||||
['name' => 'HR', 'permissions' => []],
|
||||
['name' => 'Purchasing', 'permissions' => []],
|
||||
['name' => 'QA', 'permissions' => []],
|
||||
['name' => 'QM', 'permissions' => []],
|
||||
['name' => 'Finance', 'permissions' => []],
|
||||
['name' => 'Employee', 'permissions' => [
|
||||
'Help' => [
|
||||
'permissionowner' => 1,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'backend',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 0,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 0,
|
||||
'permissiondelete' => 0,
|
||||
'permissionpermission' => 0
|
||||
],
|
||||
'Profile' => [
|
||||
'permissionowner' => 1,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'backend',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 0,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 0,
|
||||
'permissiondelete' => 0,
|
||||
'permissionpermission' => 0
|
||||
],
|
||||
'Helper' => [
|
||||
'permissionowner' => 1,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'backend',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 0,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 0,
|
||||
'permissiondelete' => 0,
|
||||
'permissionpermission' => 0
|
||||
],
|
||||
]],
|
||||
['name' => 'Controlling', 'permissions' => [
|
||||
'Helper' => [
|
||||
'permissionowner' => 1,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'backend',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 4,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 8,
|
||||
'permissiondelete' => 16,
|
||||
'permissionpermission' => 32
|
||||
],
|
||||
]],
|
||||
];
|
||||
|
||||
foreach ($groups as $group) {
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('name', $group['name']);
|
||||
$request->setData('status', GroupStatus::ACTIVE);
|
||||
|
||||
$module->apiGroupCreate($request, $response);
|
||||
|
||||
if (!empty($group['permissions'])) {
|
||||
$g = $response->get('')['response'];
|
||||
foreach ($group['permissions'] as $key => $p) {
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('permissionowner', $p['permissionowner']);
|
||||
$request->setData('permissionref', $g->getId());
|
||||
$request->setData('permissionunit', $p['permissionunit']);
|
||||
$request->setData('permissionapp', $p['permissionapp']);
|
||||
$request->setData('permissionmodule', $key);
|
||||
$request->setData('permissiontype', $p['permissiontype']);
|
||||
$request->setData('permissionelement', $p['permissionelement']);
|
||||
$request->setData('permissioncomponent', $p['permissioncomponent']);
|
||||
$request->setData('permissioncreate', $p['permissioncreate']);
|
||||
$request->setData('permissionread', $p['permissionread']);
|
||||
$request->setData('permissionupdate', $p['permissionupdate']);
|
||||
$request->setData('permissiondelete', $p['permissiondelete']);
|
||||
$request->setData('permissionpermission', $p['permissionpermission']);
|
||||
|
||||
$module->apiAddGroupPermission($request, $response);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup departments
|
||||
*/
|
||||
$module = $app->moduleManager->get('Organization');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
use Modules\Organization\Models\Status;
|
||||
|
||||
$departments = [
|
||||
['name' => 'Management', 'parent' => null],
|
||||
['name' => 'R&D', 'parent' => 'Management'],
|
||||
['name' => 'Sales', 'parent' => 'Management'],
|
||||
['name' => 'Production', 'parent' => 'Management'],
|
||||
['name' => 'Warehouse', 'parent' => 'Production'],
|
||||
['name' => 'Secretariat', 'parent' => 'Management'],
|
||||
['name' => 'Registration', 'parent' => 'Management'],
|
||||
['name' => 'HR', 'parent' => 'Management'],
|
||||
['name' => 'Purchasing', 'parent' => 'Management'],
|
||||
['name' => 'QA', 'parent' => 'Management'],
|
||||
['name' => 'QM', 'parent' => 'Management'],
|
||||
['name' => 'Finance', 'parent' => 'Management'],
|
||||
['name' => 'IT', 'parent' => 'Management'],
|
||||
];
|
||||
$departmentIds = [];
|
||||
|
||||
foreach ($departments as $department) {
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('name', $department['name']);
|
||||
$request->setData('status', Status::ACTIVE);
|
||||
$request->setData('unit', 2);
|
||||
$request->setData('parent', $departmentIds[$department['parent']] ?? null);
|
||||
|
||||
$module->apiDepartmentCreate($request, $response);
|
||||
$departmentIds[$department['name']] = $response->get('')['response']->getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup positions
|
||||
*/
|
||||
$module = $app->moduleManager->get('Organization');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
use Modules\Organization\Models\DepartmentMapper;
|
||||
|
||||
$positions = [
|
||||
['name' => 'Chairman', 'department' => 'Management', 'parent' => null],
|
||||
['name' => 'CEO', 'department' => 'Management', 'parent' => 'Chairman'],
|
||||
['name' => 'Executive Member', 'department' => null, 'parent' => 'Chairman'],
|
||||
['name' => 'COO', 'department' => 'Management', 'parent' => 'CEO'],
|
||||
['name' => 'CTO', 'department' => 'R&D', 'parent' => 'CEO'],
|
||||
['name' => 'R&D Employee', 'department' => 'R&D', 'parent' => 'CTO'],
|
||||
['name' => 'CFO', 'department' => 'Finance', 'parent' => 'CEO'],
|
||||
['name' => 'Accountant', 'department' => 'Finance', 'parent' => 'CFO'],
|
||||
['name' => 'CSO', 'department' => 'Sales', 'parent' => 'CEO'],
|
||||
['name' => 'Export Controle Officer', 'department' => 'Sales', 'parent' => 'CEO'],
|
||||
['name' => 'Back Office Sales', 'department' => 'Sales', 'parent' => 'CSO'],
|
||||
['name' => 'Head of Secretariat', 'department' => 'Secretariat', 'parent' => 'CEO'],
|
||||
['name' => 'Secretary', 'department' => 'Secretariat', 'parent' => 'Head of Secretariat'],
|
||||
['name' => 'Head of Production', 'department' => 'Production', 'parent' => 'CEO'],
|
||||
['name' => 'Production Leader', 'department' => 'Production', 'parent' => 'Head of Production'],
|
||||
['name' => 'Production Section Leader', 'department' => 'Production', 'parent' => 'Head of Production'],
|
||||
['name' => 'Warehouse Section Leader', 'department' => 'Warehouse', 'parent' => 'Head of Production'],
|
||||
['name' => 'Production Employee', 'department' => 'Production', 'parent' => 'Production Section Leader'],
|
||||
['name' => 'Warehouse Employee', 'department' => 'Warehouse', 'parent' => 'Warehouse Section Leader'],
|
||||
['name' => 'Head of Purchasing', 'department' => 'Purchasing', 'parent' => 'CEO'],
|
||||
['name' => 'Back Office Purchasing', 'department' => 'Purchasing', 'parent' => 'Head of Purchasing'],
|
||||
['name' => 'Head of QM', 'department' => 'QM', 'parent' => 'CEO'],
|
||||
['name' => 'QM Employee', 'department' => 'QM', 'parent' => 'Head of QM'],
|
||||
['name' => 'Head of QA', 'department' => 'QA', 'parent' => 'CEO'],
|
||||
['name' => 'QA Employee', 'department' => 'QA', 'parent' => 'Head of QA'],
|
||||
['name' => 'Head of HR', 'department' => 'HR', 'parent' => 'CEO'],
|
||||
['name' => 'HR Employee', 'department' => 'HR', 'parent' => 'Head of HR'],
|
||||
['name' => 'Head of IT', 'department' => 'IT', 'parent' => 'CEO'],
|
||||
];
|
||||
|
||||
$departments = DepartmentMapper::getAll();
|
||||
$postionIds = [];
|
||||
foreach ($positions as $position) {
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('name', $position['name']);
|
||||
$request->setData('status', Status::ACTIVE);
|
||||
$request->setData('parent', $positionIds[$position['parent']] ?? null);
|
||||
|
||||
foreach ($departments as $d) {
|
||||
if (!isset($position['department']) || $d->getName() === $position['department']) {
|
||||
$request->setData('department', $d->getId());
|
||||
$module->apiPositionCreate($request, $response);
|
||||
|
||||
$positionIds[$position['name']] = $response->get('')['response']->getId();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup accounts
|
||||
*/
|
||||
$module = $app->moduleManager->get('Admin');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
use Modules\Admin\Models\AccountMapper;
|
||||
use phpOMS\Account\AccountStatus;
|
||||
use phpOMS\Account\AccountType;
|
||||
|
||||
$accounts = [
|
||||
[
|
||||
'login' => 'deichhorn',
|
||||
'pass' => 'deichhorn',
|
||||
'name1' => 'Dennis',
|
||||
'name2' => 'Eichhorn',
|
||||
'email' => 'dennis.eichhorn@gdfmbh.com',
|
||||
'groups' => ['Executive', 'Finance', 'Controlling', 'Employee']
|
||||
]
|
||||
];
|
||||
|
||||
$groups = GroupMapper::getAll();
|
||||
foreach ($accounts as $account) {
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('login', $account['login']);
|
||||
$request->setData('password', $account['pass']);
|
||||
$request->setData('name1', $account['name1']);
|
||||
$request->setData('name2', $account['name2']);
|
||||
$request->setData('email', $account['email']);
|
||||
$request->setData('type', AccountType::USER);
|
||||
$request->setData('status', AccountStatus::INACTIVE);
|
||||
|
||||
$module->apiAccountCreate($request, $response);
|
||||
|
||||
$a = $response->get('')['response'];
|
||||
foreach ($groups as $g) {
|
||||
if (\in_array($g->getName(), $account['groups'])) {
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount($a->getId());
|
||||
$request->setData('account', $a->getId());
|
||||
$request->setData('igroup-idlist', (string) $g->getId());
|
||||
|
||||
$module->apiAddGroupToAccount($request, $response);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup helper module
|
||||
*/
|
||||
|
|
@ -8,6 +8,9 @@ usermod -aG sudo test
|
|||
#wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
|
||||
#echo "deb https://packages.sury.org/php/ stretch main" | sudo tee /etc/apt/sources.list.d/php.list
|
||||
|
||||
apt -y install software-properties-common
|
||||
add-apt-repository ppa:ondrej/php
|
||||
|
||||
apt-get update
|
||||
|
||||
apt-get install npm git php7.4 php7.4-dev php7.4-cli php7.4-common php7.4-mysql php7.4-pgsql php7.4-xdebug php7.4-json php7.4-opcache php7.4-pdo php7.4-sqlite php7.4-mbstring php7.4-curl php7.4-imap php7.4-bcmath php7.4-zip php7.4-dom php7.4-xml php7.4-phar php7.4-gd php-pear apache2 mysql-server postgresql postgresql-contrib
|
||||
|
|
|
|||
22
packages.txt
22
packages.txt
|
|
@ -1,22 +0,0 @@
|
|||
ii libapache2-mod-php7.0 7.0.28-1~dotdeb+8.1 amd64 server-side, HTML-embedded scripting language (Apache 2 module)
|
||||
ii php-bcmath 1:7.0+42-1~dotdeb+8.1 all Bcmath module for PHP [default]
|
||||
ii php-common 1:42-1~dotdeb+8.1 all Common files for PHP packages
|
||||
ii php7.0-bcmath 7.0.28-1~dotdeb+8.1 amd64 Bcmath module for PHP
|
||||
ii php7.0-cli 7.0.28-1~dotdeb+8.1 amd64 command-line interpreter for the PHP scripting language
|
||||
ii php7.0-common 7.0.28-1~dotdeb+8.1 amd64 documentation, examples and common module for PHP
|
||||
ii php7.0-curl 7.0.28-1~dotdeb+8.1 amd64 CURL module for PHP
|
||||
ii php7.0-gd 7.0.28-1~dotdeb+8.1 amd64 GD module for PHP
|
||||
ii php7.0-igbinary 2.0.1-1~dotdeb+8.1 amd64 igbinary serializer for PHP
|
||||
ii php7.0-imap 7.0.28-1~dotdeb+8.1 amd64 IMAP module for PHP
|
||||
ii php7.0-json 7.0.28-1~dotdeb+8.1 amd64 JSON module for PHP
|
||||
ii php7.0-mbstring 7.0.28-1~dotdeb+8.1 amd64 MBSTRING module for PHP
|
||||
ii php7.0-memcached 3.0.3-1~dotdeb+8.1 amd64 memcached extension module for PHP, uses libmemcached
|
||||
ii php7.0-msgpack 2.0.1-1~dotdeb+8.2 amd64 MessagePack serializer for PHP
|
||||
ii php7.0-mysql 7.0.28-1~dotdeb+8.1 amd64 MySQL module for PHP
|
||||
ii php7.0-opcache 7.0.28-1~dotdeb+8.1 amd64 Zend OpCache module for PHP
|
||||
ii php7.0-pgsql 7.0.28-1~dotdeb+8.1 amd64 PostgreSQL module for PHP
|
||||
ii php7.0-readline 7.0.28-1~dotdeb+8.1 amd64 readline module for PHP
|
||||
ii php7.0-sqlite3 7.0.28-1~dotdeb+8.1 amd64 SQLite3 module for PHP
|
||||
ii php7.0-xdebug 1:2.5.5-1~dotdeb+8.1 amd64 Xdebug Module for PHP
|
||||
ii php7.0-xml 7.0.28-1~dotdeb+8.1 amd64 DOM, SimpleXML, WDDX, XML, and XSL module for PHP
|
||||
ii php7.0-zip 7.0.28-1~dotdeb+8.1 amd64 Zip module for PHP
|
||||
892
sdSetup.php
892
sdSetup.php
|
|
@ -1,892 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Remove old install and setup database.
|
||||
*
|
||||
* This script is usefull when you want to manually install the app without resetting an old database/app or new empty database.
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
\ini_set('memory_limit', '2048M');
|
||||
\ini_set('display_errors', '1');
|
||||
\ini_set('display_startup_errors', '1');
|
||||
\error_reporting(\E_ALL);
|
||||
|
||||
require_once __DIR__ . '/../phpOMS/Autoloader.php';
|
||||
|
||||
use Install\WebApplication;
|
||||
use Model\CoreSettings;
|
||||
use Model\Settings;
|
||||
use Modules\Admin\Models\AccountPermission;
|
||||
use Modules\Admin\Models\GroupMapper;
|
||||
use Modules\News\Models\NewsStatus;
|
||||
use Modules\News\Models\NewsType;
|
||||
use Modules\Organization\Models\DepartmentMapper;
|
||||
use Modules\Organization\Models\Status;
|
||||
use phpOMS\Account\Account;
|
||||
use phpOMS\Account\AccountManager;
|
||||
use phpOMS\Account\AccountStatus;
|
||||
use phpOMS\Account\AccountType;
|
||||
use phpOMS\Account\GroupStatus;
|
||||
use phpOMS\Account\PermissionOwner;
|
||||
use phpOMS\Account\PermissionType;
|
||||
use phpOMS\ApplicationAbstract;
|
||||
use phpOMS\DataStorage\Database\DatabasePool;
|
||||
use phpOMS\DataStorage\Session\HttpSession;
|
||||
use phpOMS\Dispatcher\Dispatcher;
|
||||
use phpOMS\Event\EventManager;
|
||||
use phpOMS\Localization\ISO639x1Enum;
|
||||
use phpOMS\Message\Http\Request;
|
||||
use phpOMS\Message\Http\RequestMethod;
|
||||
use phpOMS\Message\Http\Response;
|
||||
use phpOMS\Module\ModuleManager;
|
||||
use phpOMS\Router\WebRouter;
|
||||
use phpOMS\Uri\Http;
|
||||
use phpOMS\Utils\TestUtils;
|
||||
|
||||
$config = [
|
||||
'db' => [
|
||||
'core' => [
|
||||
'masters' => [
|
||||
'admin' => [
|
||||
'db' => 'mysql', /* db type */
|
||||
'host' => '127.0.0.1', /* db host address */
|
||||
'port' => '3306', /* db host port */
|
||||
'login' => 'root', /* db login name */
|
||||
'password' => 'root', /* db login password */
|
||||
'database' => 'oms', /* db name */
|
||||
'prefix' => 'oms_', /* db table prefix */
|
||||
'weight' => 1000, /* db table prefix */
|
||||
],
|
||||
'insert' => [
|
||||
'db' => 'mysql', /* db type */
|
||||
'host' => '127.0.0.1', /* db host address */
|
||||
'port' => '3306', /* db host port */
|
||||
'login' => 'root', /* db login name */
|
||||
'password' => 'root', /* db login password */
|
||||
'database' => 'oms', /* db name */
|
||||
'prefix' => 'oms_', /* db table prefix */
|
||||
'weight' => 1000, /* db table prefix */
|
||||
],
|
||||
'select' => [
|
||||
'db' => 'mysql', /* db type */
|
||||
'host' => '127.0.0.1', /* db host address */
|
||||
'port' => '3306', /* db host port */
|
||||
'login' => 'root', /* db login name */
|
||||
'password' => 'root', /* db login password */
|
||||
'database' => 'oms', /* db name */
|
||||
'prefix' => 'oms_', /* db table prefix */
|
||||
'weight' => 1000, /* db table prefix */
|
||||
],
|
||||
'update' => [
|
||||
'db' => 'mysql', /* db type */
|
||||
'host' => '127.0.0.1', /* db host address */
|
||||
'port' => '3306', /* db host port */
|
||||
'login' => 'root', /* db login name */
|
||||
'password' => 'root', /* db login password */
|
||||
'database' => 'oms', /* db name */
|
||||
'prefix' => 'oms_', /* db table prefix */
|
||||
'weight' => 1000, /* db table prefix */
|
||||
],
|
||||
'delete' => [
|
||||
'db' => 'mysql', /* db type */
|
||||
'host' => '127.0.0.1', /* db host address */
|
||||
'port' => '3306', /* db host port */
|
||||
'login' => 'root', /* db login name */
|
||||
'password' => 'root', /* db login password */
|
||||
'database' => 'oms', /* db name */
|
||||
'prefix' => 'oms_', /* db table prefix */
|
||||
'weight' => 1000, /* db table prefix */
|
||||
],
|
||||
'schema' => [
|
||||
'db' => 'mysql', /* db type */
|
||||
'host' => '127.0.0.1', /* db host address */
|
||||
'port' => '3306', /* db host port */
|
||||
'login' => 'root', /* db login name */
|
||||
'password' => 'root', /* db login password */
|
||||
'database' => 'oms', /* db name */
|
||||
'prefix' => 'oms_', /* db table prefix */
|
||||
'weight' => 1000, /* db table prefix */
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'cache' => [
|
||||
'redis' => [
|
||||
'db' => 1,
|
||||
'host' => '127.0.0.1',
|
||||
'port' => 6379,
|
||||
],
|
||||
'memcached' => [
|
||||
'host' => '127.0.0.1',
|
||||
'port' => 11211,
|
||||
],
|
||||
],
|
||||
'log' => [
|
||||
'file' => [
|
||||
'path' => __DIR__ . '/Logs',
|
||||
],
|
||||
],
|
||||
'page' => [
|
||||
'root' => '/',
|
||||
'https' => false,
|
||||
],
|
||||
'app' => [
|
||||
'path' => __DIR__,
|
||||
],
|
||||
'socket' => [
|
||||
'master' => [
|
||||
'host' => '127.0.0.1',
|
||||
'limit' => 300,
|
||||
'port' => 4310,
|
||||
],
|
||||
],
|
||||
'language' => [
|
||||
'en',
|
||||
],
|
||||
'apis' => [
|
||||
],
|
||||
];
|
||||
|
||||
// Reset database
|
||||
$db = new \PDO($config['db']['core']['masters']['admin']['db'] . ':host=' .
|
||||
$config['db']['core']['masters']['admin']['host'],
|
||||
$config['db']['core']['masters']['admin']['login'],
|
||||
$config['db']['core']['masters']['admin']['password']
|
||||
);
|
||||
$db->exec('DROP DATABASE IF EXISTS ' . $config['db']['core']['masters']['admin']['database']);
|
||||
$db->exec('CREATE DATABASE IF NOT EXISTS ' . $config['db']['core']['masters']['admin']['database']);
|
||||
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
$request->setMethod(RequestMethod::POST);
|
||||
|
||||
$request->setData('dbhost', $config['db']['core']['masters']['admin']['host']);
|
||||
$request->setData('dbtype', $config['db']['core']['masters']['admin']['db']);
|
||||
$request->setData('dbport', $config['db']['core']['masters']['admin']['port']);
|
||||
$request->setData('dbprefix', $config['db']['core']['masters']['admin']['prefix']);
|
||||
$request->setData('dbname', $config['db']['core']['masters']['admin']['database']);
|
||||
$request->setData('schemauser', $config['db']['core']['masters']['admin']['login']);
|
||||
$request->setData('schemapassword', $config['db']['core']['masters']['admin']['password']);
|
||||
$request->setData('createuser', $config['db']['core']['masters']['admin']['login']);
|
||||
$request->setData('createpassword', $config['db']['core']['masters']['admin']['password']);
|
||||
$request->setData('selectuser', $config['db']['core']['masters']['admin']['login']);
|
||||
$request->setData('selectpassword', $config['db']['core']['masters']['admin']['password']);
|
||||
$request->setData('updateuser', $config['db']['core']['masters']['admin']['login']);
|
||||
$request->setData('updatepassword', $config['db']['core']['masters']['admin']['password']);
|
||||
$request->setData('deleteuser', $config['db']['core']['masters']['admin']['login']);
|
||||
$request->setData('deletepassword', $config['db']['core']['masters']['admin']['password']);
|
||||
|
||||
$request->setData('orgname', 'Micerium');
|
||||
$request->setData('adminname', 'admin');
|
||||
$request->setData('adminpassword', 'orange');
|
||||
$request->setData('adminemail', 'admin@oms.com');
|
||||
$request->setData('domain', '127.0.0.1');
|
||||
$request->setData('websubdir', $config['page']['root']);
|
||||
$request->setData('defaultlang', 'en');
|
||||
|
||||
WebApplication::installRequest($request, $response);
|
||||
|
||||
// Setup for api calls
|
||||
$app = new class() extends ApplicationAbstract
|
||||
{
|
||||
protected string $appName = 'Api';
|
||||
};
|
||||
|
||||
$app->dbPool = new DatabasePool();
|
||||
$app->dbPool->create('admin', $config['db']['core']['masters']['admin']);
|
||||
$app->dbPool->create('select', $config['db']['core']['masters']['select']);
|
||||
$app->dbPool->create('update', $config['db']['core']['masters']['update']);
|
||||
$app->dbPool->create('insert', $config['db']['core']['masters']['insert']);
|
||||
$app->dbPool->create('schema', $config['db']['core']['masters']['schema']);
|
||||
|
||||
$app->orgId = 1;
|
||||
$app->appName = 'Backend';
|
||||
$app->accountManager = new AccountManager(new HttpSession());
|
||||
$app->appSettings = new CoreSettings($app->dbPool->get());
|
||||
$app->moduleManager = new ModuleManager($app, __DIR__ . '/../Modules');
|
||||
$app->dispatcher = new Dispatcher($app);
|
||||
$app->eventManager = new EventManager($app->dispatcher);
|
||||
$app->eventManager->importFromFile(__DIR__ . '/../Web/Api/Hooks.php');
|
||||
|
||||
$account = new Account();
|
||||
TestUtils::setMember($account, 'id', 1);
|
||||
|
||||
$permission = new AccountPermission();
|
||||
$permission->setUnit(2);
|
||||
$permission->setApp('backend');
|
||||
$permission->setPermission(
|
||||
PermissionType::READ
|
||||
| PermissionType::CREATE
|
||||
| PermissionType::MODIFY
|
||||
| PermissionType::DELETE
|
||||
| PermissionType::PERMISSION
|
||||
);
|
||||
|
||||
$account->addPermission($permission);
|
||||
|
||||
$app->accountManager->add($account);
|
||||
$app->router = new WebRouter();
|
||||
|
||||
/**
|
||||
* Setup additional units
|
||||
*/
|
||||
$module = $app->moduleManager->get('Organization');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('name', 'Schütz Dental GmbH');
|
||||
$request->setData('parent', 1);
|
||||
$request->setData('status', 1);
|
||||
|
||||
$module->apiUnitCreate($request, $response);
|
||||
|
||||
/**
|
||||
* Change app settings
|
||||
*/
|
||||
$module = $app->moduleManager->get('Admin');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('settings', \json_encode([Settings::DEFAULT_ORGANIZATION => '2']));
|
||||
|
||||
$module->apiSettingsSet($request, $response);
|
||||
|
||||
/**
|
||||
* Install modules
|
||||
*/
|
||||
$module = $app->moduleManager->get('Admin');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('status', 3);
|
||||
|
||||
// Helper
|
||||
$request->setData('m, trueodule', 'Helper');
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// Search
|
||||
$request->setData('module', 'Search', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// Dashboard
|
||||
$request->setData('module', 'Dashboard', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// Tasks
|
||||
$request->setData('module', 'Tasks', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// Message
|
||||
$request->setData('module', 'Message', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// Calendar
|
||||
$request->setData('module', 'Calendar', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// Editor
|
||||
$request->setData('module', 'Editor', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// Checklist
|
||||
$request->setData('module', 'Checklist', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// News
|
||||
$request->setData('module', 'News', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// Profile
|
||||
$request->setData('module', 'Profile', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// Kanban
|
||||
$request->setData('module', 'Kanban', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// Workflow
|
||||
$request->setData('module', 'Workflow', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// HumanResourceManagement
|
||||
$request->setData('module', 'HumanResourceManagement', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// HumanResourceTimeRecording
|
||||
$request->setData('module', 'HumanResourceTimeRecording', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// MyPrivate
|
||||
$request->setData('module', 'MyPrivate', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// Support
|
||||
$request->setData('module', 'Support', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// ClientManagement
|
||||
$request->setData('module', 'ClientManagement', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// SupplierManagement
|
||||
$request->setData('module', 'SupplierManagement', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// ItemManagement
|
||||
$request->setData('module', 'ItemManagement', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// Billling
|
||||
$request->setData('module', 'Billling', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// InvoiceManagement
|
||||
$request->setData('module', 'InvoiceManagement', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// WarehouseManagement
|
||||
$request->setData('module', 'WarehouseManagement', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// StockTaking
|
||||
$request->setData('module', 'StockTaking', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// QualityManagement
|
||||
$request->setData('module', 'QualityManagement', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// AssetManagement
|
||||
$request->setData('module', 'AssetManagement', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
// Marketing
|
||||
$request->setData('module', 'Marketing', true);
|
||||
$module->apiModuleStatusUpdate($request, $response);
|
||||
|
||||
/**
|
||||
* Setup groups
|
||||
*/
|
||||
$module = $app->moduleManager->get('Admin');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
$groups = [
|
||||
['name' => 'beta_tester', 'permissions' => [
|
||||
[
|
||||
'module' => 'News',
|
||||
'permissionowner' => PermissionOwner::GROUP,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'backend',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 4,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 8,
|
||||
'permissiondelete' => 0,
|
||||
'permissionpermission' => 0,
|
||||
],
|
||||
[
|
||||
'module' => 'News',
|
||||
'permissionowner' => PermissionOwner::GROUP,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'api',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 4,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 8,
|
||||
'permissiondelete' => 0,
|
||||
'permissionpermission' => 0,
|
||||
],
|
||||
]],
|
||||
['name' => 'Management', 'permissions' => []],
|
||||
['name' => 'Executive', 'permissions' => []],
|
||||
['name' => 'R&D', 'permissions' => []],
|
||||
['name' => 'Sales', 'permissions' => []],
|
||||
['name' => 'Service', 'permissions' => []],
|
||||
['name' => 'Support', 'permissions' => []],
|
||||
['name' => 'Secretariat', 'permissions' => [
|
||||
[
|
||||
'module' => 'News',
|
||||
'permissionowner' => PermissionOwner::GROUP,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'backend',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 4,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 8,
|
||||
'permissiondelete' => 0,
|
||||
'permissionpermission' => 0,
|
||||
],
|
||||
[
|
||||
'module' => 'News',
|
||||
'permissionowner' => PermissionOwner::GROUP,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'api',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 4,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 8,
|
||||
'permissiondelete' => 0,
|
||||
'permissionpermission' => 0,
|
||||
],
|
||||
]],
|
||||
['name' => 'HR', 'permissions' => []],
|
||||
['name' => 'Purchasing', 'permissions' => []],
|
||||
['name' => 'QA', 'permissions' => []],
|
||||
['name' => 'QM', 'permissions' => []],
|
||||
['name' => 'IT', 'permissions' => []],
|
||||
['name' => 'Marketing', 'permissions' => []],
|
||||
['name' => 'Warehouse', 'permissions' => []],
|
||||
['name' => 'Registration', 'permissions' => []],
|
||||
['name' => 'Finance', 'permissions' => []],
|
||||
['name' => 'Employee', 'permissions' => [
|
||||
[
|
||||
'module' => 'Help',
|
||||
'permissionowner' => PermissionOwner::GROUP,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'backend',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 0,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 0,
|
||||
'permissiondelete' => 0,
|
||||
'permissionpermission' => 0,
|
||||
],
|
||||
[
|
||||
'module' => 'Dashboard',
|
||||
'permissionowner' => PermissionOwner::GROUP,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'backend',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 0,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 0,
|
||||
'permissiondelete' => 0,
|
||||
'permissionpermission' => 0,
|
||||
],
|
||||
[
|
||||
'module' => 'Profile',
|
||||
'permissionowner' => PermissionOwner::GROUP,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'backend',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 0,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 0,
|
||||
'permissiondelete' => 0,
|
||||
'permissionpermission' => 0,
|
||||
],
|
||||
[
|
||||
'module' => 'Media',
|
||||
'permissionowner' => PermissionOwner::GROUP,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'backend',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 4,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 0,
|
||||
'permissiondelete' => 0,
|
||||
'permissionpermission' => 0,
|
||||
],
|
||||
[
|
||||
'module' => 'Media',
|
||||
'permissionowner' => PermissionOwner::GROUP,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'api',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 4,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 8,
|
||||
'permissiondelete' => 0,
|
||||
'permissionpermission' => 0,
|
||||
],
|
||||
[
|
||||
'module' => 'Tasks',
|
||||
'permissionowner' => PermissionOwner::GROUP,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'backend',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 4,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 0,
|
||||
'permissiondelete' => 0,
|
||||
'permissionpermission' => 0,
|
||||
],
|
||||
[
|
||||
'module' => 'Tasks',
|
||||
'permissionowner' => PermissionOwner::GROUP,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'api',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 4,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 0,
|
||||
'permissiondelete' => 0,
|
||||
'permissionpermission' => 0,
|
||||
],
|
||||
[
|
||||
'module' => 'Helper',
|
||||
'permissionowner' => PermissionOwner::GROUP,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'backend',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 0,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 0,
|
||||
'permissiondelete' => 0,
|
||||
'permissionpermission' => 0,
|
||||
],
|
||||
]],
|
||||
['name' => 'Controlling', 'permissions' => [
|
||||
[
|
||||
'module' => 'Helper',
|
||||
'permissionowner' => PermissionOwner::GROUP,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'backend',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 4,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 8,
|
||||
'permissiondelete' => 16,
|
||||
'permissionpermission' => 32,
|
||||
],
|
||||
[
|
||||
'module' => 'Helper',
|
||||
'permissionowner' => PermissionOwner::GROUP,
|
||||
'permissionunit' => 2,
|
||||
'permissionapp' => 'api',
|
||||
'permissiontype' => null,
|
||||
'permissionelement' => null,
|
||||
'permissioncomponent' => null,
|
||||
'permissioncreate' => 4,
|
||||
'permissionread' => 2,
|
||||
'permissionupdate' => 8,
|
||||
'permissiondelete' => 16,
|
||||
'permissionpermission' => 32,
|
||||
],
|
||||
]],
|
||||
];
|
||||
|
||||
foreach ($groups as $group) {
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('name', $group['name']);
|
||||
$request->setData('status', GroupStatus::ACTIVE);
|
||||
|
||||
$module->apiGroupCreate($request, $response);
|
||||
|
||||
if (!empty($group['permissions'])) {
|
||||
$g = $response->get('')['response'];
|
||||
foreach ($group['permissions'] as $key => $p) {
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('permissionowner', $p['permissionowner']);
|
||||
$request->setData('permissionref', $g->getId());
|
||||
$request->setData('permissionunit', $p['permissionunit']);
|
||||
$request->setData('permissionapp', $p['permissionapp']);
|
||||
$request->setData('permissionmodule', $p['module']);
|
||||
$request->setData('permissiontype', $p['permissiontype']);
|
||||
$request->setData('permissionelement', $p['permissionelement']);
|
||||
$request->setData('permissioncomponent', $p['permissioncomponent']);
|
||||
$request->setData('permissioncreate', $p['permissioncreate']);
|
||||
$request->setData('permissionread', $p['permissionread']);
|
||||
$request->setData('permissionupdate', $p['permissionupdate']);
|
||||
$request->setData('permissiondelete', $p['permissiondelete']);
|
||||
$request->setData('permissionpermission', $p['permissionpermission']);
|
||||
|
||||
$module->apiAddGroupPermission($request, $response);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup departments
|
||||
*/
|
||||
$module = $app->moduleManager->get('Organization');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
$departments = [
|
||||
['name' => 'Management', 'parent' => null],
|
||||
['name' => 'R&D', 'parent' => 'Management'],
|
||||
['name' => 'Sales', 'parent' => 'Management'],
|
||||
['name' => 'Service', 'parent' => 'Management'],
|
||||
['name' => 'Support', 'parent' => 'Management'],
|
||||
['name' => 'Purchase', 'parent' => 'Management'],
|
||||
['name' => 'Warehouse', 'parent' => 'Purchase'],
|
||||
['name' => 'Secretariat', 'parent' => 'Management'],
|
||||
['name' => 'Registration', 'parent' => 'Management'],
|
||||
['name' => 'HR', 'parent' => 'Management'],
|
||||
['name' => 'Purchasing', 'parent' => 'Management'],
|
||||
['name' => 'QA', 'parent' => 'Management'],
|
||||
['name' => 'QM', 'parent' => 'Management'],
|
||||
['name' => 'Finance', 'parent' => 'Management'],
|
||||
['name' => 'Marketing', 'parent' => 'Management'],
|
||||
['name' => 'IT', 'parent' => 'Management'],
|
||||
];
|
||||
$departmentIds = [];
|
||||
|
||||
foreach ($departments as $department) {
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('name', $department['name']);
|
||||
$request->setData('status', Status::ACTIVE);
|
||||
$request->setData('unit', 2);
|
||||
$request->setData('parent', $departmentIds[$department['parent']] ?? null);
|
||||
|
||||
$module->apiDepartmentCreate($request, $response);
|
||||
$departmentIds[$department['name']] = $response->get('')['response']->getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup positions
|
||||
*/
|
||||
$module = $app->moduleManager->get('Organization');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
$positions = [
|
||||
['name' => 'Chairman', 'department' => 'Management', 'parent' => null],
|
||||
['name' => 'CEO', 'department' => 'Management', 'parent' => 'Chairman'],
|
||||
['name' => 'Executive Member', 'department' => null, 'parent' => 'Chairman'],
|
||||
['name' => 'COO', 'department' => 'Management', 'parent' => 'CEO'],
|
||||
['name' => 'CTO', 'department' => 'R&D', 'parent' => 'CEO'],
|
||||
['name' => 'R&D Employee', 'department' => 'R&D', 'parent' => 'CTO'],
|
||||
['name' => 'CFO', 'department' => 'Finance', 'parent' => 'CEO'],
|
||||
['name' => 'Accountant', 'department' => 'Finance', 'parent' => 'CFO'],
|
||||
['name' => 'CSO', 'department' => 'Sales', 'parent' => 'CEO'],
|
||||
['name' => 'Export Controle Officer', 'department' => 'Sales', 'parent' => 'CEO'],
|
||||
['name' => 'Back Office Sales', 'department' => 'Sales', 'parent' => 'CSO'],
|
||||
['name' => 'Head of Secretariat', 'department' => 'Secretariat', 'parent' => 'CEO'],
|
||||
['name' => 'Secretary', 'department' => 'Secretariat', 'parent' => 'Head of Secretariat'],
|
||||
['name' => 'Head of Service', 'department' => 'Service', 'parent' => 'CEO'],
|
||||
['name' => 'Service Employee', 'department' => 'Service', 'parent' => 'Head of Service'],
|
||||
['name' => 'Head of Support', 'department' => 'Support', 'parent' => 'CEO'],
|
||||
['name' => 'Support Employee', 'department' => 'Support', 'parent' => 'Head of Support'],
|
||||
['name' => 'Head of Warehouse', 'department' => 'Warehouse', 'parent' => 'Head of Production'],
|
||||
['name' => 'Warehouse Employee', 'department' => 'Warehouse', 'parent' => 'Head of Warehouse'],
|
||||
['name' => 'Head of Purchasing', 'department' => 'Purchasing', 'parent' => 'CEO'],
|
||||
['name' => 'Back Office Purchasing', 'department' => 'Purchasing', 'parent' => 'Head of Purchasing'],
|
||||
['name' => 'Head of QM', 'department' => 'QM', 'parent' => 'CEO'],
|
||||
['name' => 'QM Employee', 'department' => 'QM', 'parent' => 'Head of QM'],
|
||||
['name' => 'Head of QA', 'department' => 'QA', 'parent' => 'CEO'],
|
||||
['name' => 'QA Employee', 'department' => 'QA', 'parent' => 'Head of QA'],
|
||||
['name' => 'Head of HR', 'department' => 'HR', 'parent' => 'CEO'],
|
||||
['name' => 'HR Employee', 'department' => 'HR', 'parent' => 'Head of HR'],
|
||||
['name' => 'Head of IT', 'department' => 'IT', 'parent' => 'CEO'],
|
||||
['name' => 'IT Employee', 'department' => 'IT', 'parent' => 'Head of IT'],
|
||||
['name' => 'Trainee', 'department' => 'HR', 'parent' => 'Head of HR'],
|
||||
];
|
||||
|
||||
$departments = DepartmentMapper::getAll();
|
||||
$postionIds = [];
|
||||
foreach ($positions as $position) {
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('name', $position['name']);
|
||||
$request->setData('status', Status::ACTIVE);
|
||||
$request->setData('parent', $positionIds[$position['parent']] ?? null);
|
||||
|
||||
foreach ($departments as $d) {
|
||||
if (!isset($position['department']) || $d->getName() === $position['department']) {
|
||||
$request->setData('department', $d->getId());
|
||||
$module->apiPositionCreate($request, $response);
|
||||
|
||||
$positionIds[$position['name']] = $response->get('')['response']->getId();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup accounts
|
||||
*/
|
||||
$module = $app->moduleManager->get('Admin');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
$accounts = [
|
||||
[
|
||||
'login' => 'deichhorn',
|
||||
'pass' => 'deichhorn',
|
||||
'name1' => 'Dennis',
|
||||
'name2' => 'Eichhorn',
|
||||
'email' => 'd.eichhorn@schuetz-dental.de',
|
||||
'groups' => ['Executive', 'Finance', 'Controlling', 'Employee', 'beta_tester'],
|
||||
],
|
||||
];
|
||||
|
||||
$groups = GroupMapper::getAll();
|
||||
foreach ($accounts as $account) {
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('login', $account['login']);
|
||||
$request->setData('password', $account['pass']);
|
||||
$request->setData('name1', $account['name1']);
|
||||
$request->setData('name2', $account['name2']);
|
||||
$request->setData('email', $account['email']);
|
||||
$request->setData('type', AccountType::USER);
|
||||
$request->setData('status', AccountStatus::INACTIVE);
|
||||
|
||||
$module->apiAccountCreate($request, $response);
|
||||
|
||||
$a = $response->get('')['response'];
|
||||
foreach ($groups as $g) {
|
||||
if (\in_array($g->getName(), $account['groups'])) {
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount($a->getId());
|
||||
$request->setData('account', $a->getId());
|
||||
$request->setData('igroup-idlist', (string) $g->getId());
|
||||
|
||||
$module->apiAddGroupToAccount($request, $response);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup dashboard module
|
||||
*/
|
||||
$module = $app->moduleManager->get('Dashboard');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(1);
|
||||
$request->setData('title', 'TestBoard');
|
||||
$module->apiBoardCreate($request, $response);
|
||||
|
||||
$request->setData('board', 1);
|
||||
$request->setData('order', 1, true);
|
||||
$request->setData('module', 'News', true);
|
||||
$module->apiComponentCreate($request, $response);
|
||||
|
||||
$request->setData('order', 2, true);
|
||||
$request->setData('module', 'Tasks', true);
|
||||
$module->apiComponentCreate($request, $response);
|
||||
|
||||
$request->setData('order', 3, true);
|
||||
$request->setData('module', 'Message', true);
|
||||
$module->apiComponentCreate($request, $response);
|
||||
|
||||
$request->setData('order', 4, true);
|
||||
$request->setData('module', 'Calendar', true);
|
||||
$module->apiComponentCreate($request, $response);
|
||||
|
||||
/**
|
||||
* Setup helper module
|
||||
*/
|
||||
|
||||
/**
|
||||
* Setup news module
|
||||
*/
|
||||
$module = $app->moduleManager->get('News');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(2);
|
||||
$request->setData('publish', 'now');
|
||||
$request->setData('title', 'Welcome beta testers!');
|
||||
$request->setData('plain',
|
||||
"I'm proud to announce that the very first version of the new intranet of Micerium/Schütz is now in private beta."
|
||||
. "\n\nFor the private beta only a couple of people have access to it and can use/test it. For those of you who are in this private beta test phase your frustration will be worth it on our ride to improve the system over time. Your feedback is well appreciated and will be implemented whenever possible. Please note that especially in the beginning a lot of things remain to be implemented and fixed and therefore it may take some time to serve all of your feedback justice."
|
||||
. "\n\nThe goal of this new intranet is to unify all the different IT systems the company currently uses into one. As a result we hope to reduce the workload of all employees and frustration of dealing with multiple software solutions. Of course this new intranet will not be able to solve all problems in the very beginning but over time we hope to modernize and simplify our workflows."
|
||||
. "\n\nAll the data which is created during the private beta phase will remain even once we go into public beta. Please note that every beta user is part of the **beta_tester** group. Some things will only be made visiable and created for the **beta_tester** group. This means once we go into public beta and into the release later on these things will only remain visible to beta testers. Examples are news articles like this one, some tasks/todos and more which will be specifically targeted to beta testers. Of course some of the data created during the beta test phase will be also visible to all other employees in the public beta or after the release."
|
||||
. "\n\nIf you find bugs or feature requests please do so in the [support/ticket](support/list) module. All issues created during the beta test should be created with the **private_beta** tag and for the **beta_tester** group. These issues will then be visible to all beta testers and allows all beta testers to see the progress which is made and also avoids duplicated bug reports or feature requests. Additionally all beta testers will be able to comment on bugs and feature requests."
|
||||
. "\n\nI'm looking forward to your help and support."
|
||||
. "\n\n## Information"
|
||||
. "\n\nBelow please find a summary of important information which may be helpful for you:"
|
||||
. "\n\n* Messages and calendar events in this intranet and your outlook are synchronized once a day at midnight. Of course messages and calendar events created in the intranet are shown immediately in the intranet (but only after midnight in outlook)"
|
||||
. "\n* Invoices from the ERP system are imported once a day at midnight but invoices created in this intranet cannot be exported to the ERP!"
|
||||
. "\n* Documents, customer reports and phone notes of customers are imported from the CRM once a day at midnight but cannot be exported to the CRM!"
|
||||
);
|
||||
$request->setData('type', NewsType::ARTICLE);
|
||||
$request->setData('status', NewsStatus::VISIBLE);
|
||||
$request->setData('featured', true);
|
||||
$request->setData('lang', ISO639x1Enum::_EN);
|
||||
$module->apiNewsCreate($request, $response);
|
||||
|
||||
/**
|
||||
* Setup human resource module
|
||||
*/
|
||||
$module = $app->moduleManager->get('HumanResourceManagement');
|
||||
TestUtils::setMember($module, 'app', $app);
|
||||
|
||||
$response = new Response();
|
||||
$request = new Request(new Http(''));
|
||||
|
||||
$request->getHeader()->setAccount(2);
|
||||
$request->setData('profiles', 1);
|
||||
|
||||
$module->apiEmployeeCreate($request, $response);
|
||||
|
||||
$request->setData('employee', 1, true);
|
||||
$request->setData('start', '2015-07-01', true);
|
||||
$request->setData('end', '2017-01-15', true);
|
||||
$request->setData('unit', 2, true);
|
||||
$request->setData('department', 14, true);
|
||||
$request->setData('position', 30, true);
|
||||
|
||||
$module->apiEmployeeHistoryCreate($request, $response);
|
||||
|
||||
$request->setData('employee', 1, true);
|
||||
$request->setData('start', '2017-01-15', true);
|
||||
$request->setData('end', '2019-01-01', true);
|
||||
$request->setData('unit', 2, true);
|
||||
$request->setData('department', 14, true);
|
||||
$request->setData('position', 8, true);
|
||||
|
||||
$module->apiEmployeeHistoryCreate($request, $response);
|
||||
|
||||
$request->setData('employee', 1, true);
|
||||
$request->setData('start', '2019-01-01', true);
|
||||
$request->setData('end', '', true);
|
||||
$request->setData('unit', 2, true);
|
||||
$request->setData('department', 14, true);
|
||||
$request->setData('position', 7, true);
|
||||
|
||||
$module->apiEmployeeHistoryCreate($request, $response);
|
||||
2
setup.sh
2
setup.sh
|
|
@ -115,7 +115,7 @@ wget --tries=2 -nc https://github.com/phan/phan/releases/download/0.12.5/phan.ph
|
|||
wget --tries=2 -nc https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v2.13.1/php-cs-fixer.phar
|
||||
wget --tries=2 -nc https://github.com/jasmine/jasmine/releases/download/v3.1.0/jasmine-standalone-3.1.0.zip
|
||||
wget --tries=2 -nc https://github.com/Orange-Management/Documentor/releases/download/v1.1.1/documentor.phar
|
||||
wget --tries=2 -nc https://github.com/Orange-Management/TestReportGenerator/releases/download/1.1.0-rc2/testreportgenerator.phar
|
||||
wget --tries=2 -nc https://github.com/Orange-Management/TestReportGenerator/releases/download/1.1.0-rc3/testreportgenerator.phar
|
||||
|
||||
mkdir ${ROOT_PATH}/jsOMS/tests
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user