import { FastifyInstance, FastifyRequest, FastifyReply } from 'fastify'; import { createReadStream, stat } from 'fs'; import { access, readFile } from 'fs/promises'; import { join } from 'path'; import { lookup } from 'mime-types'; import jwt from 'jsonwebtoken'; import { UserRole, UserStatus } from '@prisma/client'; import { prisma } from '../../../config/database'; import { env } from '../../../config/env'; import { logger } from '../../../utils/logger'; import { hasAnyRole, MEDIA_ROLES } from '../../../utils/roles'; /** * Check if the request is from an authenticated admin user. * Supports JWT from Authorization header or ?token= query parameter * (needed for