Add session-based login for console

This commit is contained in:
biondizzle
2025-06-05 09:56:25 -04:00
parent b7a5841e54
commit a09126220d
5 changed files with 121 additions and 1 deletions

View File

@@ -19,9 +19,20 @@ class ConsoleApiController extends AbstractController
private EntityManagerInterface $entityManager
) {}
private function checkAuth(Request $request): ?JsonResponse
{
if (!$request->getSession()->get('console_logged_in')) {
return new JsonResponse(['error' => 'Unauthorized'], Response::HTTP_UNAUTHORIZED);
}
return null;
}
// Credentials Management
public function credentials(Request $request): JsonResponse
{
if ($resp = $this->checkAuth($request)) {
return $resp;
}
if ($request->getMethod() === 'GET') {
$credentials = $this->entityManager->getRepository(S3Credential::class)->findAll();
@@ -63,6 +74,9 @@ class ConsoleApiController extends AbstractController
public function credentialDetail(int $id, Request $request): JsonResponse
{
if ($resp = $this->checkAuth($request)) {
return $resp;
}
$credential = $this->entityManager->getRepository(S3Credential::class)->find($id);
if (!$credential) {
@@ -115,6 +129,9 @@ class ConsoleApiController extends AbstractController
// Buckets Management
public function buckets(Request $request): JsonResponse
{
if ($resp = $this->checkAuth($request)) {
return $resp;
}
if ($request->getMethod() === 'GET') {
$buckets = $this->entityManager->getRepository(S3Bucket::class)->findAll();
@@ -177,6 +194,9 @@ class ConsoleApiController extends AbstractController
public function bucketDetail(string $name, Request $request): JsonResponse
{
if ($resp = $this->checkAuth($request)) {
return $resp;
}
$bucket = $this->s3Service->findBucketByName($name);
if (!$bucket) {
@@ -224,6 +244,9 @@ class ConsoleApiController extends AbstractController
// Objects Management
public function objects(string $bucketName, Request $request): JsonResponse
{
if ($resp = $this->checkAuth($request)) {
return $resp;
}
$bucket = $this->s3Service->findBucketByName($bucketName);
if (!$bucket) {
@@ -270,6 +293,9 @@ class ConsoleApiController extends AbstractController
public function objectDetail(string $bucketName, string $objectKey, Request $request): JsonResponse
{
if ($resp = $this->checkAuth($request)) {
return $resp;
}
$bucket = $this->s3Service->findBucketByName($bucketName);
if (!$bucket) {
@@ -309,6 +335,9 @@ class ConsoleApiController extends AbstractController
// Multipart Uploads
public function multipartUploads(string $bucketName, Request $request): JsonResponse
{
if ($resp = $this->checkAuth($request)) {
return $resp;
}
$bucket = $this->s3Service->findBucketByName($bucketName);
if (!$bucket) {
@@ -339,6 +368,9 @@ class ConsoleApiController extends AbstractController
// Presigned URLs
public function presignedUrls(Request $request): JsonResponse
{
if ($resp = $this->checkAuth($request)) {
return $resp;
}
if ($request->getMethod() === 'GET') {
$urls = $this->entityManager->getRepository(\App\Entity\S3PresignedUrl::class)
->createQueryBuilder('p')
@@ -392,6 +424,9 @@ class ConsoleApiController extends AbstractController
// Statistics
public function stats(Request $request): JsonResponse
{
if ($resp = $this->checkAuth($request)) {
return $resp;
}
$credentialCount = $this->entityManager->getRepository(S3Credential::class)->count([]);
$bucketCount = $this->entityManager->getRepository(S3Bucket::class)->count([]);
$objectCount = $this->entityManager->getRepository(S3Object::class)->count([]);