feat(admin): preserve list return target for back and close actions
This commit is contained in:
@@ -11,6 +11,9 @@ use MintyPHP\Support\Guard;
|
||||
$session = app(SessionStoreInterface::class)->all();
|
||||
Guard::requireLogin();
|
||||
$request = requestInput();
|
||||
$returnTarget = requestResolveReturnTarget();
|
||||
$closeTarget = requestResolveReturnTarget('admin/roles');
|
||||
$createTarget = requestPathWithReturnTarget('admin/roles/create', $returnTarget);
|
||||
|
||||
$currentUserId = (int) ($session['user']['id'] ?? 0);
|
||||
$authorizationService = app(\MintyPHP\Service\Access\AuthorizationService::class);
|
||||
@@ -34,8 +37,8 @@ $permissions = $permissionRepository->listActive();
|
||||
$selectedPermissionIds = [];
|
||||
|
||||
if ($request->isMethod('POST') && !Session::checkCsrfToken()) {
|
||||
Flash::error(t('Form expired, please try again'), 'admin/roles/create', 'csrf_expired');
|
||||
Router::redirect('admin/roles/create');
|
||||
Flash::error(t('Form expired, please try again'), $createTarget, 'csrf_expired');
|
||||
Router::redirect($createTarget);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -72,17 +75,17 @@ if ($request->hasBody('description')) {
|
||||
|
||||
$action = (string) $request->body('action', 'create');
|
||||
if ($action === 'create_close') {
|
||||
Flash::success('Role created', 'admin/roles', 'role_created');
|
||||
Router::redirect('admin/roles');
|
||||
Flash::success('Role created', $closeTarget, 'role_created');
|
||||
Router::redirect($closeTarget);
|
||||
} else {
|
||||
$uuid = (string) ($result['uuid'] ?? '');
|
||||
if ($uuid !== '') {
|
||||
$target = "admin/roles/edit/{$uuid}";
|
||||
$target = requestPathWithReturnTarget("admin/roles/edit/{$uuid}", $returnTarget);
|
||||
Flash::success('Role created', $target, 'role_created');
|
||||
Router::redirect($target);
|
||||
} else {
|
||||
Flash::success('Role created', 'admin/roles', 'role_created');
|
||||
Router::redirect('admin/roles');
|
||||
Flash::success('Role created', $closeTarget, 'role_created');
|
||||
Router::redirect($closeTarget);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,8 @@ use MintyPHP\Support\Guard;
|
||||
$session = app(SessionStoreInterface::class)->all();
|
||||
Guard::requireLogin();
|
||||
$request = requestInput();
|
||||
$returnTarget = requestResolveReturnTarget();
|
||||
$closeTarget = requestResolveReturnTarget('admin/roles');
|
||||
|
||||
$currentUserId = (int) ($session['user']['id'] ?? 0);
|
||||
$authorizationService = app(\MintyPHP\Service\Access\AuthorizationService::class);
|
||||
@@ -21,10 +23,11 @@ $userWriteRepository = app(\MintyPHP\Repository\User\UserWriteRepository::class)
|
||||
$userAccountService = app(\MintyPHP\Service\User\UserAccountService::class);
|
||||
|
||||
$uuid = trim((string) ($id ?? ''));
|
||||
$editTarget = requestPathWithReturnTarget("admin/roles/edit/{$uuid}", $returnTarget);
|
||||
$role = $uuid !== '' ? app(\MintyPHP\Service\Access\RoleService::class)->findByUuid($uuid) : null;
|
||||
if (!$role) {
|
||||
Flash::error('Role not found', 'admin/roles', 'role_not_found');
|
||||
Router::redirect('admin/roles');
|
||||
Flash::error('Role not found', $closeTarget, 'role_not_found');
|
||||
Router::redirect($closeTarget);
|
||||
}
|
||||
|
||||
$roleId = (int) ($role['id'] ?? 0);
|
||||
@@ -65,8 +68,8 @@ $permissions = $permissionRepository->listActive();
|
||||
$selectedPermissionIds = $rolePermissionRepository->listPermissionIdsByRoleId($roleId);
|
||||
|
||||
if ($request->isMethod('POST') && !Session::checkCsrfToken()) {
|
||||
Flash::error(t('Form expired, please try again'), "admin/roles/edit/{$uuid}", 'csrf_expired');
|
||||
Router::redirect("admin/roles/edit/{$uuid}");
|
||||
Flash::error(t('Form expired, please try again'), $editTarget, 'csrf_expired');
|
||||
Router::redirect($editTarget);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -114,11 +117,11 @@ if ($request->hasBody('description')) {
|
||||
if ($syncSucceeded) {
|
||||
$action = (string) $request->body('action', 'save');
|
||||
if ($action === 'save_close') {
|
||||
Flash::success('Role updated', 'admin/roles', 'role_updated');
|
||||
Router::redirect('admin/roles');
|
||||
Flash::success('Role updated', $closeTarget, 'role_updated');
|
||||
Router::redirect($closeTarget);
|
||||
} else {
|
||||
Flash::success('Role updated', "admin/roles/edit/{$uuid}", 'role_updated');
|
||||
Router::redirect("admin/roles/edit/{$uuid}");
|
||||
Flash::success('Role updated', $editTarget, 'role_updated');
|
||||
Router::redirect($editTarget);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
use MintyPHP\Router;
|
||||
use MintyPHP\Http\Request;
|
||||
|
||||
$canCreateRoles = (bool) ($canCreateRoles ?? false);
|
||||
$toolbarFilterSchema = is_array($toolbarFilterSchema ?? null) ? $toolbarFilterSchema : [];
|
||||
@@ -22,7 +23,7 @@ $listTitle = t('Roles');
|
||||
ob_start();
|
||||
?>
|
||||
<?php if ($canCreateRoles): ?>
|
||||
<a role="button" class="primary" href="admin/roles/create">
|
||||
<a role="button" class="primary" href="<?php e(requestPathWithReturnTarget('admin/roles/create', Request::pathWithQuery())); ?>">
|
||||
<i class="bi bi-plus"></i> <?php e(t('Create role')); ?>
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
|
||||
Reference in New Issue
Block a user