mirror of
https://github.com/Karaka-Management/oms-Admin.git
synced 2026-01-28 20:48:41 +00:00
Went through todos
This commit is contained in:
parent
7e719d7c29
commit
3934e32c78
|
|
@ -117,7 +117,7 @@ return [
|
|||
],
|
||||
],
|
||||
|
||||
'^.*/admin/group$' => [
|
||||
'^.*/admin/group(\?.*|$)$' => [
|
||||
[
|
||||
'dest' => '\Modules\Admin\Controller\ApiController:apiGroupCreate',
|
||||
'verb' => RouteVerb::PUT,
|
||||
|
|
@ -164,7 +164,7 @@ return [
|
|||
],
|
||||
],
|
||||
|
||||
'^.*/admin/find/account(\?.*|$)' => [
|
||||
'^.*/admin/account/find(\?.*|$)' => [
|
||||
[
|
||||
'dest' => '\Modules\Admin\Controller\ApiController:apiAccountFind',
|
||||
'verb' => RouteVerb::GET,
|
||||
|
|
@ -177,7 +177,7 @@ return [
|
|||
],
|
||||
],
|
||||
],
|
||||
'^.*/admin/find/group(\?.*$|$)' => [
|
||||
'^.*/admin/group/find(\?.*$|$)' => [
|
||||
[
|
||||
'dest' => '\Modules\Admin\Controller\ApiController:apiGroupFind',
|
||||
'verb' => RouteVerb::GET,
|
||||
|
|
@ -450,7 +450,7 @@ return [
|
|||
],
|
||||
],
|
||||
],
|
||||
'^.*/account/address$' => [
|
||||
'^.*/account/address(\?.*|$)$' => [
|
||||
[
|
||||
'dest' => '\Modules\Admin\Controller\ApiController:apiAddressCreate',
|
||||
'verb' => RouteVerb::PUT,
|
||||
|
|
@ -485,7 +485,7 @@ return [
|
|||
],
|
||||
],
|
||||
],
|
||||
'^.*/account/contact$' => [
|
||||
'^.*/account/contact(\?.*|$)$' => [
|
||||
[
|
||||
'dest' => '\Modules\Admin\Controller\ApiController:apiContactCreate',
|
||||
'verb' => RouteVerb::PUT,
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ use phpOMS\Message\NotificationLevel;
|
|||
use phpOMS\Message\RequestAbstract;
|
||||
use phpOMS\Message\ResponseAbstract;
|
||||
use phpOMS\Model\Message\FormValidation;
|
||||
use phpOMS\Model\Message\Reload;
|
||||
use phpOMS\Module\ModuleInfo;
|
||||
use phpOMS\Module\ModuleStatus;
|
||||
use phpOMS\Security\EncryptionHelper;
|
||||
|
|
@ -88,8 +87,6 @@ use phpOMS\Utils\Parser\Php\ArrayParser;
|
|||
use phpOMS\Utils\RnG\StringUtils as StringRng;
|
||||
use phpOMS\Utils\StringUtils;
|
||||
use phpOMS\Validation\Network\Email as EmailValidator;
|
||||
use phpOMS\Version\Version;
|
||||
use Modules\Media\Models\UploadStatus;
|
||||
|
||||
/**
|
||||
* Admin controller class.
|
||||
|
|
@ -106,6 +103,12 @@ use Modules\Media\Models\UploadStatus;
|
|||
*
|
||||
* @todo Split up the ApiController, it is doing way to much in one file.
|
||||
* Consider to create one for: accounts+groups+permissions and one for general stuff like address+settings etc.
|
||||
*
|
||||
* @todo Create api key/token permissions for api interactions through tokens
|
||||
* Maybe we need to assign tokens to users but sometimes users want to give tokens limited permissions
|
||||
* https://github.com/Karaka-Management/oms-Admin/issues/24
|
||||
* https://github.com/Karaka-Management/oms-Admin/issues/25
|
||||
* https://github.com/Karaka-Management/oms-Admin/issues/26
|
||||
*/
|
||||
final class ApiController extends Controller
|
||||
{
|
||||
|
|
@ -133,7 +136,7 @@ final class ApiController extends Controller
|
|||
|
||||
if ($login > LoginReturnType::OK) {
|
||||
$this->app->sessionManager->set('UID', $login, true);
|
||||
$response->set($request->uri->__toString(), new Reload());
|
||||
$response->set($request->uri->__toString(), new \phpOMS\Model\Message\Redirect());
|
||||
} elseif ($login === LoginReturnType::NOT_ACTIVATED) {
|
||||
$response->header->status = RequestStatusCode::R_401;
|
||||
$this->fillJsonResponse(
|
||||
|
|
@ -372,7 +375,7 @@ final class ApiController extends Controller
|
|||
]);
|
||||
}
|
||||
|
||||
$token = (string) \random_bytes(64);
|
||||
$token = (string) \bin2hex(\random_bytes(32));
|
||||
$handler = $this->setUpServerMailHandler();
|
||||
$resetLink = UriFactory::build('{/base}/reset?user=' . $account->id . '&token=' . $token);
|
||||
|
||||
|
|
@ -1143,7 +1146,7 @@ final class ApiController extends Controller
|
|||
$upload->outputDir = __DIR__ . '/../../../Web/Backend/img';
|
||||
|
||||
$status = $upload->upload($request->files, ['logo.png'], true);
|
||||
if ($status[0]['status'] !== UploadStatus::OK) {
|
||||
if ($status[0]['status'] !== \Modules\Media\Models\UploadStatus::OK) {
|
||||
$response->header->status = RequestStatusCode::R_400;
|
||||
|
||||
$this->createInvalidUpdateResponse($request, $response, []);
|
||||
|
|
@ -1521,6 +1524,7 @@ final class ApiController extends Controller
|
|||
/** @var \Modules\Admin\Models\Group[] $groups */
|
||||
$groups = GroupMapper::getAll()
|
||||
->where('name', '%' . ($request->getDataString('search') ?? '') . '%', 'LIKE')
|
||||
->limit($request->getDataInt('limit') ?? 50)
|
||||
->executeGetArray();
|
||||
|
||||
$response->header->set('Content-Type', MimeType::M_JSON, true);
|
||||
|
|
@ -1648,7 +1652,8 @@ final class ApiController extends Controller
|
|||
private function validateAccountCreate(RequestAbstract $request) : array
|
||||
{
|
||||
$val = [];
|
||||
if (($val['name1'] = !$request->hasData('name1'))
|
||||
if (($val['user'] = !$request->hasData('user'))
|
||||
|| ($val['name1'] = !$request->hasData('name1'))
|
||||
|| ($val['type'] = !AccountType::isValidValue((int) $request->getData('type')))
|
||||
|| ($val['status'] = !AccountStatus::isValidValue((int) $request->getData('status')))
|
||||
|| ($val['email'] = $request->hasData('email') && !EmailValidator::isValid((string) $request->getData('email')))
|
||||
|
|
@ -1749,7 +1754,7 @@ final class ApiController extends Controller
|
|||
'',
|
||||
\str_replace(
|
||||
'{url}',
|
||||
UriFactory::build('{/base}/admin/account/settings?{?}&id=' . $account->id),
|
||||
UriFactory::build('{/base}/admin/account/view?{?}&id=' . $account->id),
|
||||
$this->app->l11nManager->getText($response->header->l11n->language, '0', '0', 'SuccessfulCreate'
|
||||
)),
|
||||
$account
|
||||
|
|
@ -3126,6 +3131,9 @@ final class ApiController extends Controller
|
|||
*
|
||||
* @api
|
||||
*
|
||||
* @todo Create update logic for application, resources, modules
|
||||
* https://github.com/Karaka-Management/oms-Admin/issues/17
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function apiCheckForUpdates(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void
|
||||
|
|
@ -3157,10 +3165,10 @@ final class ApiController extends Controller
|
|||
$currentVersion = '';
|
||||
$remoteVersion = \substr($file[1], 0, -5);
|
||||
|
||||
if (Version::compare($currentVersion, $remoteVersion) < 0) {
|
||||
if (\phpOMS\Version\Version::compare($currentVersion, $remoteVersion) < 0) {
|
||||
$toUpdate[$name[0]][$remoteVersion] = $file;
|
||||
|
||||
\uksort($toUpdate[$name[0]], [Version::class, 'compare']);
|
||||
\uksort($toUpdate[$name[0]], [\phpOMS\Version\Version::class, 'compare']);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3961,6 +3969,9 @@ final class ApiController extends Controller
|
|||
*
|
||||
* @api
|
||||
*
|
||||
* @todo Find a way to hide some contact/address information for some modules
|
||||
* https://github.com/Karaka-Management/oms-Profile/issues/3
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function apiAddressCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ use Modules\Admin\Models\ModuleMapper;
|
|||
use Modules\Admin\Models\SettingsEnum;
|
||||
use Modules\Auditor\Models\AuditMapper;
|
||||
use Modules\Organization\Models\UnitMapper;
|
||||
use Modules\Profile\Models\ProfileMapper;
|
||||
use phpOMS\Autoloader;
|
||||
use phpOMS\Contract\RenderableInterface;
|
||||
use phpOMS\DataStorage\Database\Query\OrderType;
|
||||
|
|
@ -45,6 +46,9 @@ use Web\Backend\Views\TableView;
|
|||
* @link https://jingga.app
|
||||
* @since 1.0.0
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @todo Create a view where it's possible to create/activate, change and delete/deactivate hooks for events.
|
||||
* https://github.com/Karaka-Management/oms-Admin/issues/12
|
||||
*/
|
||||
final class BackendController extends Controller
|
||||
{
|
||||
|
|
@ -199,6 +203,10 @@ final class BackendController extends Controller
|
|||
|
||||
$view->data['account'] = $account;
|
||||
|
||||
$view->data['profile'] = ProfileMapper::get()
|
||||
->where('account', $account->id)
|
||||
->execute();
|
||||
|
||||
/** @var \Modules\Admin\Models\AccountPermission[] $permissions */
|
||||
$permissions = AccountPermissionMapper::getAll()
|
||||
->where('account', (int) $request->getData('id'))
|
||||
|
|
@ -605,6 +613,10 @@ final class BackendController extends Controller
|
|||
*
|
||||
* @return RenderableInterface Response can be rendered
|
||||
*
|
||||
* @todo Disable routing for front end. This way only the functionality is available (api)
|
||||
* This can be easily achieved by setting the route `active => false`
|
||||
* https://github.com/Karaka-Management/oms-Admin/issues/18
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function viewModuleRouteList(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface
|
||||
|
|
|
|||
|
|
@ -22,7 +22,10 @@ echo $this->data['nav']->render(); ?>
|
|||
<div class="row">
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<section class="portlet">
|
||||
<form id="fAccount" action="<?= UriFactory::build('{/api}admin/account?csrf={$CSRF}'); ?>" method="put">
|
||||
<form id="fAccount"
|
||||
action="<?= UriFactory::build('{/api}admin/account?csrf={$CSRF}'); ?>"
|
||||
method="put"
|
||||
data-redirect="<?= UriFactory::build('{/base}/admin/account/view'); ?>?id={/0/response/id}">
|
||||
<div class="portlet-head"><?= $this->getHtml('Account'); ?></div>
|
||||
<div class="portlet-body">
|
||||
<div class="form-group">
|
||||
|
|
@ -47,7 +50,7 @@ echo $this->data['nav']->render(); ?>
|
|||
<label for="iUsername"><?= $this->getHtml('Username'); ?></label>
|
||||
<span class="input">
|
||||
<button class="inactive" type="button"><i class="g-icon">person</i></button>
|
||||
<input id="iUsername" name="name" type="text" autocomplete="off" spellcheck="false">
|
||||
<input id="iUsername" name="user" type="text" autocomplete="off" spellcheck="false" required>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use Modules\Admin\Models\NullAccount;
|
||||
use phpOMS\Account\AccountStatus;
|
||||
use phpOMS\Account\AccountType;
|
||||
use phpOMS\Account\PermissionOwner;
|
||||
|
|
@ -21,7 +22,9 @@ use phpOMS\Uri\UriFactory;
|
|||
/**
|
||||
* @var \phpOMS\Views\View $this
|
||||
*/
|
||||
$account = $this->data['account'];
|
||||
$account = $this->data['account'] ?? new NullAccount();
|
||||
$isNew = $account->id === 0;
|
||||
|
||||
$permissions = $this->data['permissions'];
|
||||
$l11n = $account->l11n;
|
||||
|
||||
|
|
@ -29,7 +32,7 @@ $audits = $this->data['audits'] ?? [];
|
|||
|
||||
$tableView = $this->data['tableView'];
|
||||
$tableView->id = 'auditList';
|
||||
$tableView->baseUri = '{/base}/admin/account/settings?id=' . $account->id;
|
||||
$tableView->baseUri = '{/base}/admin/account/view?id=' . $account->id;
|
||||
$tableView->exportUri = '{/api}auditor/list/export?csrf={$CSRF}';
|
||||
$tableView->setObjects($audits);
|
||||
|
||||
|
|
@ -89,7 +92,7 @@ echo $this->data['nav']->render(); ?>
|
|||
<label for="iUsername"><?= $this->getHtml('Username'); ?></label>
|
||||
<span class="input">
|
||||
<button class="inactive" type="button"><i class="g-icon">person</i></button>
|
||||
<input id="iUsername" name="name" type="text" autocomplete="off" spellcheck="false" value="<?= $this->printHtml($account->login); ?>">
|
||||
<input id="iUsername" name="user" type="text" autocomplete="off" spellcheck="false" value="<?= $this->printHtml($account->login); ?>" required>
|
||||
</span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
|
@ -135,16 +138,19 @@ echo $this->data['nav']->render(); ?>
|
|||
</div>
|
||||
<div class="portlet-foot">
|
||||
<input id="account-edit-submit" name="editSubmit" type="submit" value="<?= $this->getHtml('Save', '0', '0'); ?>">
|
||||
<?php if ($account->id !== 0 && $this->data['profile']->id === 0) : ?>
|
||||
<button id="account-profile-create" data-action='[
|
||||
{
|
||||
"key": 1, "listener": "click", "action": [
|
||||
{"key": 1, "type": "event.prevent"},
|
||||
{"key": 2, "type": "dom.getvalue", "base": "", "selector": "#iId"},
|
||||
{"key": 3, "type": "message.request", "uri": "{/base}/{/lang}/api/view", "method": "PUT", "request_type": "json"},
|
||||
{"key": 4, "type": "message.log"}
|
||||
{"key": 2, "type": "dom.get", "base": "", "selector": "#iId"},
|
||||
{"key": 3, "type": "message.request", "uri": "<?= UriFactory::build('{/api}profile?csrf={$CSRF}') ?>", "method": "PUT", "request_type": "json"},
|
||||
{"key": 4, "type": "message.log"},
|
||||
{"key": 5, "type": "redirect", "uri": "{%}", "target": "self"}
|
||||
]
|
||||
}
|
||||
]'><?= $this->getHtml('CreateProfile'); ?></button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
|
@ -162,7 +168,20 @@ echo $this->data['nav']->render(); ?>
|
|||
<div class="portlet-body">
|
||||
<div class="form-group">
|
||||
<label for="iGroup"><?= $this->getHtml('Name'); ?></label>
|
||||
<?= $this->getData('grpSelector')->render('iGroup', true); ?>
|
||||
<div id="iGroupSelector" class="smart-input-wrapper" data-src="<?= UriFactory::build('{/api}admin/group/find?csrf={$CSRF}'); ?>">
|
||||
<div
|
||||
data-value=""
|
||||
data-name="search"
|
||||
data-limit="10"
|
||||
data-container=""
|
||||
class="input-div"
|
||||
contenteditable="true"></div>
|
||||
<template class="input-data-tpl">
|
||||
<div data-value="" data-tpl-value="/id" data-tpl-text="/name"></div>
|
||||
</template>
|
||||
<div class="input-datalist input-datalist-body vh" data-active="true">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="portlet-foot">
|
||||
|
|
@ -187,7 +206,7 @@ echo $this->data['nav']->render(); ?>
|
|||
$c = 0;
|
||||
$groups = $account->getGroups();
|
||||
foreach ($groups as $key => $value) : ++$c;
|
||||
$url = UriFactory::build('{/base}/admin/group/settings?{?}&id=' . $value->id);
|
||||
$url = UriFactory::build('{/base}/admin/group/view?{?}&id=' . $value->id);
|
||||
?>
|
||||
<tr data-href="<?= $url; ?>">
|
||||
<td><a href="#"><i class="g-icon">close</i></a>
|
||||
|
|
@ -459,7 +478,7 @@ echo $this->data['nav']->render(); ?>
|
|||
<?php endif; ?>
|
||||
<td><?= $this->printHtml((string) $audit->type); ?>
|
||||
<td><?= $this->printHtml($audit->trigger); ?>
|
||||
<td><a class="content" href="<?= UriFactory::build('{/base}/admin/account/settings?id=' . $audit->createdBy->id); ?>"><?= $this->printHtml(
|
||||
<td><a class="content" href="<?= UriFactory::build('{/base}/admin/account/view?id=' . $audit->createdBy->id); ?>"><?= $this->printHtml(
|
||||
$this->renderUserName('%3$s %2$s %1$s', [$audit->createdBy->name1, $audit->createdBy->name2, $audit->createdBy->name3, $audit->createdBy->login])
|
||||
); ?></a>
|
||||
<td><?= $this->printHtml((string) $audit->ref); ?>
|
||||
|
|
|
|||
|
|
@ -27,11 +27,11 @@ $accounts = $group->getAccounts();
|
|||
$audits = $this->data['auditlogs'] ?? [];
|
||||
|
||||
$previous = empty($audits)
|
||||
? HttpHeader::getAllHeaders()['Referer'] ?? 'admin/group/settings?id={?id}#{\#}'
|
||||
: 'admin/group/settings?{?}&audit=' . \reset($audits)->id . '&ptype=p#{\#}';
|
||||
? HttpHeader::getAllHeaders()['Referer'] ?? 'admin/group/view?id={?id}#{\#}'
|
||||
: 'admin/group/view?{?}&audit=' . \reset($audits)->id . '&ptype=p#{\#}';
|
||||
$next = empty($audits)
|
||||
? HttpHeader::getAllHeaders()['Referer'] ?? 'admin/group/settings?id={?id}#{\#}'
|
||||
: 'admin/group/settings?{?}&audit=' . \end($audits)->id . '&ptype=n#{\#}';
|
||||
? HttpHeader::getAllHeaders()['Referer'] ?? 'admin/group/view?id={?id}#{\#}'
|
||||
: 'admin/group/view?{?}&audit=' . \end($audits)->id . '&ptype=n#{\#}';
|
||||
|
||||
echo $this->data['nav']->render(); ?>
|
||||
|
||||
|
|
@ -149,7 +149,7 @@ echo $this->data['nav']->render(); ?>
|
|||
<?php
|
||||
$c = 0;
|
||||
foreach ($accounts as $key => $value) : ++$c;
|
||||
$url = UriFactory::build('{/base}/admin/account/settings?{?}&id=' . $value->id); ?>
|
||||
$url = UriFactory::build('{/base}/admin/account/view?{?}&id=' . $value->id); ?>
|
||||
<tr data-id="<?= $value->id; ?>">
|
||||
<td><input id="accountTable-remove-<?= $value->id; ?>" type="checkbox" class="vh">
|
||||
<label for="accountTable-remove-<?= $value->id; ?>" class="checked-visibility-alt"><i class="g-icon btn form-action">close</i></label>
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ echo $this->data['nav']->render(); ?>
|
|||
</label>
|
||||
<tbody>
|
||||
<?php $c = 0; foreach ($accounts as $key => $value) : ++$c;
|
||||
$url = UriFactory::build('{/base}/admin/account/settings?{?}&id=' . $value->id);
|
||||
$url = UriFactory::build('{/base}/admin/account/view?{?}&id=' . $value->id);
|
||||
$color = 'darkred';
|
||||
if ($value->status === AccountStatus::ACTIVE) { $color = 'green'; }
|
||||
elseif ($value->status === AccountStatus::INACTIVE) { $color = 'darkblue'; }
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user