You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web/Sources/src/app/router/middleware/HttpValidationMiddleware.php

39 lines
1.2 KiB

<?php
namespace App\Router\Middleware;
use App\Router\Request\IRequest;
use Shared\Validation\Validator;
class RequestValidationMiddleware extends Middleware {
private $validator;
private $rules;
public function __construct(Validator $validator, array $rules) {
$this->validator = $validator;
$this->rules = $rules;
}
public function handle(IRequest $request, callable $next) {
$this->validateRequest($request);
return parent::handle($request, $next);
}
private function validateRequest(IRequest $request) {
foreach ($this->rules as $param => $ruleSet) {
foreach ($ruleSet as $rule) {
$this->validator->rule($param, $rule['callback'], $rule['message']);
}
}
$requestData = array_merge($request->getQueryParameters(), $request->getRequestParameters());
$this->validator->assert($requestData);
}
}
// $validationRules = [
// 'email' => [
// ['callback' => Validator::required(), 'message' => 'Email is required.'],
// ['callback' => Validator::email(), 'message' => 'Email must be a valid email address.']
// ],
// // Add more rules as needed
// ];