Files
iro2-back-lecture/app/Http/Middleware/EnsureFileUploadBasicAuth.php
kosipov b36cf07635
Some checks failed
Deploy back2 / deploy (push) Failing after 46s
add autodeploy and add basic auth for file uploader
2026-04-02 19:42:04 +03:00

43 lines
1.4 KiB
PHP

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class EnsureFileUploadBasicAuth
{
public function handle(Request $request, Closure $next): Response
{
$authorizedUsers = config('file_links.upload_basic_auth_users', []);
$username = (string) $request->getUser();
$password = (string) $request->getPassword();
foreach ($authorizedUsers as $authorizedUser) {
$validUsername = isset($authorizedUser['username']) && hash_equals((string) $authorizedUser['username'], $username);
$validPassword = isset($authorizedUser['password']) && hash_equals((string) $authorizedUser['password'], $password);
if ($validUsername && $validPassword) {
return $next($request);
}
}
return $this->unauthorizedResponse($request);
}
private function unauthorizedResponse(Request $request): Response
{
if ($request->expectsJson()) {
return new JsonResponse(['message' => 'Unauthorized'], Response::HTTP_UNAUTHORIZED, [
'WWW-Authenticate' => 'Basic realm="File Upload"',
]);
}
return response('Unauthorized', Response::HTTP_UNAUTHORIZED, [
'WWW-Authenticate' => 'Basic realm="File Upload"',
]);
}
}