Initial commit
This commit is contained in:
55
api/app/Http/Controllers/Admin/UploadsController.php
Normal file
55
api/app/Http/Controllers/Admin/UploadsController.php
Normal file
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Upload;
|
||||
use App\Services\GoogleDrive\GoogleDriveService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class UploadsController extends Controller
|
||||
{
|
||||
public function show(Upload $upload, Request $request): JsonResponse
|
||||
{
|
||||
$this->authorizeUpload($upload, $request);
|
||||
|
||||
return response()->json($upload);
|
||||
}
|
||||
|
||||
public function destroy(Upload $upload, Request $request, GoogleDriveService $googleDrive): JsonResponse
|
||||
{
|
||||
$this->authorizeUpload($upload, $request);
|
||||
|
||||
if ($upload->google_drive_file_id) {
|
||||
try {
|
||||
$googleDrive->deleteFile($request->user(), $upload->google_drive_file_id);
|
||||
} catch (\Throwable) {
|
||||
// Continue to delete record even if Drive delete fails
|
||||
}
|
||||
}
|
||||
$upload->delete();
|
||||
|
||||
return response()->json(null, 204);
|
||||
}
|
||||
|
||||
public function downloadUrl(Upload $upload, Request $request, GoogleDriveService $googleDrive): JsonResponse
|
||||
{
|
||||
$this->authorizeUpload($upload, $request);
|
||||
|
||||
if (! $upload->google_drive_file_id) {
|
||||
return response()->json(['message' => 'File not yet available'], 404);
|
||||
}
|
||||
|
||||
$url = $googleDrive->getFileLink($request->user(), $upload->google_drive_file_id);
|
||||
|
||||
return response()->json(['url' => $url]);
|
||||
}
|
||||
|
||||
protected function authorizeUpload(Upload $upload, Request $request): void
|
||||
{
|
||||
if ($upload->event->user_id !== $request->user()->id) {
|
||||
abort(404);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user