Skip to content

Commit eca845e

Browse files
committed
[FIX] Limpiar URLs de vistas de archivos binarios (@@display-file, @@Download) para que funcione el SSO
1 parent 5e08d5a commit eca845e

File tree

1 file changed

+23
-6
lines changed

1 file changed

+23
-6
lines changed

src/genweb6/core/cas/utils.py

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,36 @@ def login_URL(context, request):
3939
came_from = getattr(request, 'came_from', None)
4040

4141
if came_from:
42+
# Limpiar URLs de vistas de archivos binarios (@@display-file, @@download)
43+
# para que apunten al objeto en lugar del binario directo
44+
for view_pattern in ['@@display-file/', '@@download/']:
45+
if view_pattern in came_from:
46+
came_from = came_from.split(view_pattern)[0]
47+
break
48+
4249
if not came_from.endswith('/view'):
4350
try:
44-
item_path = unir_cadenas('/' + '/'.join(context.getPhysicalPath()[1:3]), came_from)
51+
item_path = unir_cadenas(
52+
'/' + '/'.join(context.getPhysicalPath()[1: 3]),
53+
came_from)
4554
pc = api.portal.get_tool(name='portal_catalog')
4655
item = pc.unrestrictedSearchResults(path=item_path, depth=0)
4756
if item:
48-
if item[0].portal_type in ['Image', 'File']:
57+
if item[0].portal_type in [
58+
'Image', 'File']:
4959
came_from += '/view'
5060
except:
5161
pass
5262

53-
return '%s/login?idApp=%s&service=%s' % (plugin.cas_server_url, cas_settings.app_name, secureURL(strip_ticket(parse.urljoin(portal.absolute_url() + '/', came_from))))
54-
return f"{plugin.cas_server_url}/login?idApp={cas_settings.app_name}&service={secureURL(strip_ticket(parse.urljoin(portal.absolute_url() + '/', came_from)))}"
55-
63+
return '%s/login?idApp=%s&service=%s' % (
64+
plugin.cas_server_url, cas_settings.app_name,
65+
secureURL(
66+
strip_ticket(
67+
parse.urljoin(portal.absolute_url() + '/', came_from))))
68+
return '%s/login?idApp=%s&service=%s' % (
69+
plugin.cas_server_url, cas_settings.app_name,
70+
secureURL(
71+
strip_ticket(parse.urljoin(portal.absolute_url() + '/', came_from))))
5672

5773
else:
5874
return '%s/login_form' % portal.absolute_url()
@@ -89,4 +105,5 @@ def unir_cadenas(s1, s2):
89105
max_overlap = i
90106

91107
# Une las cadenas sin repetir la superposición
92-
return s1 + s2[max_overlap:]
108+
return s1 + s2[max_overlap:]
109+

0 commit comments

Comments
 (0)