35 lines
969 B
PHP
35 lines
969 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace app\adminapi\http\middleware;
|
|
|
|
use app\adminapi\service\DoctorWebConsultationPolicy;
|
|
use app\common\service\JsonService;
|
|
|
|
final class DoctorWebConsultationMiddleware
|
|
{
|
|
public function __construct(private ?array $configuration = null)
|
|
{
|
|
}
|
|
|
|
public function handle($request, \Closure $next)
|
|
{
|
|
if (DoctorWebConsultationPolicy::blocksRequest(
|
|
(array) ($request->adminInfo ?? []),
|
|
(string) $request->controller(),
|
|
(string) $request->action(),
|
|
(array) $request->header(),
|
|
null,
|
|
$this->configuration
|
|
)) {
|
|
return JsonService::fail(DoctorWebConsultationPolicy::message($this->configuration), [
|
|
'reason' => 'doctor_web_consultation_expired',
|
|
'cutoff_at' => DoctorWebConsultationPolicy::cutoffAt($this->configuration),
|
|
]);
|
|
}
|
|
|
|
return $next($request);
|
|
}
|
|
}
|