Files
portal/app/app/Http/Middleware/TgRobotToken.php
T

32 lines
1.1 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
/**
* Сервис-токен канала «Телеграм-робот кабинета МТС → Портал» (/api/tg-robot/*).
*
* Это НЕ пользовательский вход: робот ходит от своего имени, без tenant-контекста.
* Пустой токен в настройках → канал закрыт (401), чтобы его нельзя было случайно
* открыть без секрета. Тот же порядок, что у CreativeRobotToken.
*/
class TgRobotToken
{
public function handle(Request $request, Closure $next): Response
{
$expected = (string) config('services.tg_robot.token', '');
$given = (string) $request->header('X-Tg-Robot-Token', '');
if ($expected === '' || ! hash_equals($expected, $given)) {
abort(401, 'Неверный сервис-токен телеграм-робота.');
}
return $next($request);
}
}