Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
<?php

/**
* Quantum PHP Framework
*
* An open source software development framework for PHP
*
* @package Quantum
* @author Arman Ag. <arman.ag@softberg.org>
* @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org)
* @link http://quantum.softberg.org/
* @since 2.9.9
*/

namespace {{MODULE_NAMESPACE}}\Middlewares;

use Quantum\Libraries\Validation\Validator;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@
* @author Arman Ag. <arman.ag@softberg.org>
* @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org)
* @link http://quantum.softberg.org/
* @since 2.9.8
* @since 2.9.9
*/

namespace Modules\Toolkit\Controllers;

use Quantum\Service\Exceptions\ServiceException;
use Modules\Toolkit\Services\DashboardService;
use Quantum\Service\Factories\ServiceFactory;
use Quantum\App\Exceptions\BaseException;
use Quantum\Di\Exceptions\DiException;
use Quantum\Http\Response;
use Quantum\Http\Request;
Expand All @@ -37,12 +37,13 @@ class DashboardController extends BaseController

/**
* @throws DiException
* @throws ServiceException
* @throws ReflectionException
* @throws ServiceException
* @throws BaseException
*/
public function __before()
{
$this->dashboardService = ServiceFactory::get(DashboardService::class);
$this->dashboardService = service(DashboardService::class);

parent::__before();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,13 @@
* @author Arman Ag. <arman.ag@softberg.org>
* @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org)
* @link http://quantum.softberg.org/
* @since 2.9.8
* @since 2.9.9
*/

namespace Modules\Toolkit\Controllers;

use Quantum\Libraries\Database\Exceptions\DatabaseException;
use Modules\Toolkit\Services\DatabaseService;
use Quantum\Service\Factories\ServiceFactory;
use Quantum\Http\Response;
use Quantum\Http\Request;

Expand All @@ -37,7 +36,7 @@ class DatabaseController extends BaseController
*/
public function __before()
{
$this->databaseService = ServiceFactory::get(DatabaseService::class);
$this->databaseService = service(DatabaseService::class);

parent::__before();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,12 @@
* @author Arman Ag. <arman.ag@softberg.org>
* @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org)
* @link http://quantum.softberg.org/
* @since 2.9.8
* @since 2.9.9
*/

namespace Modules\Toolkit\Controllers;

use Quantum\Service\Exceptions\ServiceException;
use Quantum\Service\Factories\ServiceFactory;
use Modules\Toolkit\Services\EmailService;
use Quantum\Di\Exceptions\DiException;
use Quantum\Http\Response;
Expand All @@ -42,7 +41,7 @@ class EmailsController extends BaseController
*/
public function __before()
{
$this->emailService = ServiceFactory::get(EmailService::class);
$this->emailService = service(EmailService::class);

parent::__before();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@
* @author Arman Ag. <arman.ag@softberg.org>
* @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org)
* @link http://quantum.softberg.org/
* @since 2.9.8
* @since 2.9.9
*/

namespace Modules\Toolkit\Controllers;

use Quantum\Service\Exceptions\ServiceException;
use Quantum\Service\Factories\ServiceFactory;
use Quantum\App\Exceptions\BaseException;
use Modules\Toolkit\Services\LogsService;
use Quantum\Di\Exceptions\DiException;
use Quantum\Http\Response;
Expand All @@ -28,6 +28,7 @@ use ReflectionException;
*/
class LogsController extends BaseController
{

/**
* Logs service
* @var LogsService
Expand All @@ -36,12 +37,13 @@ class LogsController extends BaseController

/**
* @throws DiException
* @throws ServiceException
* @throws ReflectionException
* @throws ServiceException
* @throws BaseException
*/
public function __before()
{
$this->logsService = ServiceFactory::get(LogsService::class);
$this->logsService = service(LogsService::class);

parent::__before();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
<?php

/**
* Quantum PHP Framework
*
* An open source software development framework for PHP
*
* @package Quantum
* @author Arman Ag. <arman.ag@softberg.org>
* @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org)
* @link http://quantum.softberg.org/
* @since 2.9.9
*/

namespace Modules\Toolkit\Middlewares;

use Quantum\Libraries\Validation\Validator;
use Quantum\Middleware\QtMiddleware;
use Quantum\Http\Response;
use Quantum\Http\Request;

/**
* Class BaseMiddleware
* @package Modules\{{MODULE_NAME}}
*/
abstract class BaseMiddleware extends QtMiddleware
{

/**
* @var Validator
*/
protected $validator;

/**
* Initialize Validator and define rules.
* @param Request $request
*/
public function __construct(Request $request)
{
$this->validator = new Validator();

$this->defineValidationRules($request);
}

/**
* @param Request $request
* @param Response $response
*/
protected function validateRequest(Request $request, Response $response)
{
if (!$this->validator->isValid($request->all())) {
$this->respondWithError($request, $response, $this->validator->getErrors());
}
}

/**
* Define validation rules specific to middleware.
* @param Request $request
*/
protected function defineValidationRules(Request $request)
{
// default no-op: subclasses override if needed
}

/**
* Handles error response logic.
* @param Request $request
* @param Response $response
* @param mixed $message
*/
protected function respondWithError(Request $request, Response $response, $message)
{
// default no-op: subclasses override if needed
}
}
90 changes: 90 additions & 0 deletions src/Module/Templates/Toolkit/src/Middlewares/CreateTable.php.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
<?php

/**
* Quantum PHP Framework
*
* An open source software development framework for PHP
*
* @package Quantum
* @author Arman Ag. <arman.ag@softberg.org>
* @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org)
* @link http://quantum.softberg.org/
* @since 2.9.9
*/

namespace Modules\Toolkit\Middlewares;

use Modules\Toolkit\Services\DatabaseService;
use Quantum\Service\Factories\ServiceFactory;
use Quantum\Libraries\Validation\Rule;
use Quantum\Http\Response;
use Quantum\Http\Request;
use Closure;

/**
* Class CreateTable
* @package Modules\Toolkit
*/
class CreateTable extends BaseMiddleware
{

/**
* @param Request $request
* @param Response $response
* @param Closure $next
* @return mixed
*/
public function apply(Request $request, Response $response, Closure $next)
{
$this->validateRequest($request, $response);

return $next($request, $response);
}

/**
* @inheritDoc
*/
protected function defineValidationRules(Request $request)
{
$this->registerCustomRules();

$originalTableName = $request->get('originalName');

$this->validator->setRules([
'table' => [
Rule::required(),
Rule::uniqueTableName($originalTableName)
],
'data' => [
Rule::required(),
Rule::jsonString(),
Rule::nonEmptyJson()
]
]);
}

/**
* @inheritDoc
*/
protected function respondWithError(Request $request, Response $response, $message)
{
session()->setFlash('error', $message);
redirect(get_referrer());
}

/**
* Registers custom validation rules
*/
private function registerCustomRules(): void
{
$this->validator->addRule('uniqueTableName', function ($value, $except = null) {
$databaseService = ServiceFactory::get(DatabaseService::class);
return !$databaseService->tableExists($value, $except);
});

$this->validator->addRule('nonEmptyJson', function ($value) {
$decoded = json_decode($value, true);
return is_array($decoded) && !empty($decoded);
});
}
}
67 changes: 0 additions & 67 deletions src/Module/Templates/Toolkit/src/Middlewares/UniqueTable.php.tpl

This file was deleted.

Loading