Add possiblity to share gallerie with public link
All checks were successful
Docker / build (release) Successful in 8s
All checks were successful
Docker / build (release) Successful in 8s
This commit is contained in:
parent
29d2153ceb
commit
13272cb9c7
8 changed files with 174 additions and 37 deletions
|
|
@ -9,14 +9,36 @@ from django.contrib.auth import get_user_model
|
|||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.http import FileResponse, Http404
|
||||
from django.views.generic import ListView, View
|
||||
from photologue.models import Gallery
|
||||
from photologue.models import Gallery, Photo
|
||||
|
||||
|
||||
class MediaAccess(View):
|
||||
def get(self, request, path):
|
||||
if not request.user.is_authenticated and not request.session.get('public_gallery_access'):
|
||||
if not request.user.is_authenticated:
|
||||
from django.contrib.auth.views import redirect_to_login
|
||||
return redirect_to_login(request.get_full_path())
|
||||
try:
|
||||
allowed_ids = set(request.get_signed_cookie("public_galleries", default="").split(","))
|
||||
except Exception:
|
||||
allowed_ids = set()
|
||||
allowed_ids.discard("")
|
||||
if not allowed_ids:
|
||||
return redirect_to_login(request.get_full_path())
|
||||
# Direct match (original photo file)
|
||||
allowed = Photo.objects.filter(
|
||||
image=path,
|
||||
is_public=True,
|
||||
galleries__id__in=allowed_ids,
|
||||
).exists()
|
||||
# Cache files (thumbnails/display) are derived from original photos
|
||||
if not allowed and '/cache/' in path:
|
||||
original_dir = os.path.dirname(os.path.dirname(path))
|
||||
allowed = Photo.objects.filter(
|
||||
image__startswith=original_dir + '/',
|
||||
is_public=True,
|
||||
galleries__id__in=allowed_ids,
|
||||
).exists()
|
||||
if not allowed:
|
||||
return redirect_to_login(request.get_full_path())
|
||||
media_root = os.path.realpath(settings.MEDIA_ROOT)
|
||||
file_path = os.path.realpath(os.path.join(media_root, path))
|
||||
if not file_path.startswith(media_root + os.sep):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue