Skip to content

Commit

Permalink
refactor: move permission template functions to related class
Browse files Browse the repository at this point in the history
  • Loading branch information
edmondas committed Jan 3, 2024
1 parent 970a91c commit 6895124
Show file tree
Hide file tree
Showing 6 changed files with 251 additions and 126 deletions.
7 changes: 3 additions & 4 deletions lib/Application/Controller/AddPermTemplController.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@

use Poweradmin\BaseController;
use Poweradmin\Infrastructure\Repository\DbPermissionTemplateRepository;
use Poweradmin\LegacyUsers;

class AddPermTemplController extends BaseController
{
Expand All @@ -59,7 +58,7 @@ public function run(): void

private function handleFormSubmission(): void
{
if (!$this->validateRequest()) {
if (!$this->validateSubmitRequest()) {
$this->showFirstValidationError();
return;
}
Expand All @@ -72,11 +71,11 @@ private function handleFormSubmission(): void
private function showForm(): void
{
$this->render('add_perm_templ.html', [
'perms_avail' => LegacyUsers::get_permissions_by_template_id($this->db)
'perms_avail' => $this->permissionTemplate->getPermissionsByTemplateId()
]);
}

private function validateRequest(): bool
private function validateSubmitRequest(): bool
{
$this->setRequestRules([
'required' => ['templ_name'],
Expand Down
51 changes: 32 additions & 19 deletions lib/Application/Controller/DeletePermTemplController.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,54 +32,67 @@
namespace Poweradmin\Application\Controller;

use Poweradmin\BaseController;
use Poweradmin\Infrastructure\Repository\DbPermissionTemplateRepository;
use Poweradmin\LegacyUsers;
use Valitron;

class DeletePermTemplController extends BaseController
{
private DbPermissionTemplateRepository $permissionTemplate;

public function __construct(array $request)
{
parent::__construct($request);

$this->permissionTemplate = new DbPermissionTemplateRepository($this->db);
}

public function run(): void
{
$this->checkPermission('user_edit_templ_perm', _("You do not have the permission to delete permission templates."));

if (isset($_GET['confirm'])) {
$this->deletePermTempl();
$this->handleFormSubmission();
} else {
$this->showDeletePermTempl();
$this->showForm();
}
}

private function deletePermTempl(): void
private function handleFormSubmission(): void
{
$v = new Valitron\Validator($_GET);
$v->rules([
'required' => ['id'],
'integer' => ['id'],
]);

$perm_templ_id = htmlspecialchars($_GET['id']);
if (!$v->validate()) {
$this->showFirstError($v->errors());
if (!$this->validateSubmitRequest()) {
$this->showFirstValidationError();
return;
}

if (LegacyUsers::delete_perm_templ($this->db, $perm_templ_id)) {
$id = $this->getSafeRequestValue('id');
if (LegacyUsers::delete_perm_templ($this->db, $id)) {
$this->setMessage('list_perm_templ', 'success', _('The permission template has been deleted successfully.'));
$this->redirect('index.php', ['page'=> 'list_perm_templ']);
}

$this->render('list_perm_templ.html', [
'permission_templates' => LegacyUsers::list_permission_templates($this->db),
'permission_templates' => $this->permissionTemplate->listPermissionTemplates(),
]);
}

private function showDeletePermTempl(): void
private function showForm(): void
{
$perm_templ_id = htmlspecialchars($_GET['id']);
$templ_details = LegacyUsers::get_permission_template_details($this->db, $perm_templ_id);
$id = $this->getSafeRequestValue('id');
$templ_details = $this->permissionTemplate->getPermissionTemplateDetails($id);

$this->render('delete_perm_templ.html', [
'perm_templ_id' => $perm_templ_id,
'perm_templ_id' => $id,
'templ_name' => $templ_details['name'],
]);
}

private function validateSubmitRequest(): bool
{
$this->setRequestRules([
'required' => ['id'],
'integer' => ['id'],
]);

return $this->doValidateRequest();
}
}
74 changes: 46 additions & 28 deletions lib/Application/Controller/EditPermTemplController.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,58 +32,76 @@
namespace Poweradmin\Application\Controller;

use Poweradmin\BaseController;
use Poweradmin\Infrastructure\Repository\DbPermissionTemplateRepository;
use Poweradmin\LegacyUsers;
use Valitron;

class EditPermTemplController extends BaseController
{
private DbPermissionTemplateRepository $permissionTemplate;

public function __construct(array $request)
{
parent::__construct($request);

$this->permissionTemplate = new DbPermissionTemplateRepository($this->db);
}

public function run(): void
{
$this->checkPermission('templ_perm_edit', _("You do not have the permission to edit permission templates."));

$v = new Valitron\Validator($_GET);
$v->rules([
'required' => ['id'],
'integer' => ['id'],
]);

if (!$v->validate()) {
$this->showFirstError($v->errors());
if (!$this->validateRequest()) {
$this->showFirstValidationError();
return;
}

if ($this->isPost()) {
$this->editPermTempl();
$this->handleFormSubmission();
} else {
$this->showEditPermTempl();
$this->showForm();
}
}

private function editPermTempl(): void
private function handleFormSubmission(): void
{
$v = new Valitron\Validator($_POST);
$v->rules([
'required' => ['templ_name'],
]);

if ($v->validate()) {
LegacyUsers::update_perm_templ_details($this->db, $_POST);

$this->setMessage('list_perm_templ', 'success', _('The permission template has been updated successfully.'));
$this->redirect('index.php', ['page'=> 'list_perm_templ']);
} else {
$this->showFirstError($v->errors());
if (!$this->validateSubmitRequest()) {
$this->showFirstValidationError();
return;
}

$this->permissionTemplate->updatePermissionTemplateDetails($this->getRequest());
$this->setMessage('list_perm_templ', 'success', _('The permission template has been updated successfully.'));
$this->redirect('index.php', ['page'=> 'list_perm_templ']);
}

private function showEditPermTempl(): void
private function showForm(): void
{
$id = htmlspecialchars($_GET['id']);
$id = $this->getSafeRequestValue('id');
$this->render('edit_perm_templ.html', [
'id' => $id,
'templ' => LegacyUsers::get_permission_template_details($this->db, $id),
'perms_templ' => LegacyUsers::get_permissions_by_template_id($this->db, $id),
'perms_avail' => LegacyUsers::get_permissions_by_template_id($this->db),
'templ' => $this->permissionTemplate->getPermissionTemplateDetails($id),
'perms_templ' => $this->permissionTemplate->getPermissionsByTemplateId($id),
'perms_avail' => $this->permissionTemplate->getPermissionsByTemplateId(),
]);
}

private function validateRequest(): bool
{
$this->setRequestRules([
'required' => ['id'],
'integer' => ['id'],
]);

return $this->doValidateRequest();
}

private function validateSubmitRequest(): bool
{
$this->setRequestRules([
'required' => ['templ_name'],
]);

return $this->doValidateRequest();
}
}
7 changes: 6 additions & 1 deletion lib/BaseController.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ abstract class BaseController
private LegacyApplicationInitializer $init;
protected PDOLayer $db;
private array $request;
private $validator;
private Valitron\Validator $validator;

abstract public function run(): void;

Expand Down Expand Up @@ -237,6 +237,11 @@ public function getRequest(): array
return $this->request;
}

public function getSafeRequestValue(string $key): string
{
return htmlspecialchars($this->request[$key], ENT_QUOTES);
}

public function setRequestRules(array $rules): void
{
$this->validator->rules($rules);
Expand Down

0 comments on commit 6895124

Please sign in to comment.