Skip to content

Commit 9cfb649

Browse files
authored
Proxito: refactor allowed_user (#10213)
Closes #10198
1 parent 6895f49 commit 9cfb649

File tree

3 files changed

+16
-17
lines changed

3 files changed

+16
-17
lines changed

readthedocs/projects/views/public.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ def get(
369369
slug=version_slug,
370370
)
371371

372-
if not self.allowed_user(request, project, version.slug):
372+
if not self.allowed_user(request, version):
373373
return self.get_unauthed_response(request, project)
374374

375375
# All public versions can be cached.

readthedocs/proxito/views/mixins.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ def _serve_401(self, request, project):
280280
log.debug('Unauthorized access to documentation.', project_slug=project.slug)
281281
return res
282282

283-
def allowed_user(self, *args, **kwargs):
283+
def allowed_user(self, request, version):
284284
return True
285285

286286
def get_version_from_host(self, request, version_slug):

readthedocs/proxito/views/serve.py

+14-15
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ def get(
265265
pass
266266

267267
# Check user permissions and return an unauthed response if needed
268-
if not self.allowed_user(request, final_project, version_slug):
268+
if not version or not self.allowed_user(request, version):
269269
return self.get_unauthed_response(request, final_project)
270270

271271
return self._serve_docs(
@@ -460,7 +460,7 @@ def get_using_unresolver(self, request):
460460
pass
461461

462462
# Check user permissions and return an unauthed response if needed.
463-
if not self.allowed_user(request, project, version.slug):
463+
if not self.allowed_user(request, version):
464464
return self.get_unauthed_response(request, project)
465465

466466
return self._serve_docs(
@@ -637,22 +637,21 @@ def _get_custom_404_page(self, request, project, version=None):
637637
If a 404 page is found, we return a response with the content of that file,
638638
`None` otherwise.
639639
"""
640-
current_version_slug = version.slug if version else None
641-
versions_slug = []
642-
if current_version_slug:
643-
versions_slug.append(current_version_slug)
644-
645-
default_version_slug = project.get_default_version()
646-
if default_version_slug != current_version_slug:
647-
versions_slug.append(default_version_slug)
648-
649-
for version_slug_404 in versions_slug:
650-
if not self.allowed_user(request, project, version_slug_404):
640+
versions_404 = [version] if version else []
641+
if not version or version.slug != project.default_version:
642+
default_version = project.versions.filter(
643+
slug=project.default_version
644+
).first()
645+
if default_version:
646+
versions_404.append(default_version)
647+
648+
for version_404 in versions_404:
649+
if not self.allowed_user(request, version_404):
651650
continue
652651

653652
storage_root_path = project.get_storage_path(
654653
type_="html",
655-
version_slug=version_slug_404,
654+
version_slug=version_404.slug,
656655
include_file=False,
657656
version_type=self.version_type,
658657
)
@@ -664,7 +663,7 @@ def _get_custom_404_page(self, request, project, version=None):
664663
if build_media_storage.exists(storage_filename_path):
665664
log.info(
666665
"Serving custom 404.html page.",
667-
version_slug_404=version_slug_404,
666+
version_slug_404=version_404.slug,
668667
storage_filename_path=storage_filename_path,
669668
)
670669
resp = HttpResponse(

0 commit comments

Comments
 (0)