Skip to content

Commit 7a532a7

Browse files
authored
Fix 'logout' from gdp project page: issue #346 (#352)
For GDP sites use 'autologout' with 'autolaunch_page' to hit the correct OIDC redirect URI
2 parents 7291e70 + a99b256 commit 7a532a7

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

mig/shared/functionality/gdpman.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# --- BEGIN_HEADER ---
55
#
66
# gdpman - entry point with project access and management for GDP-enabled sites
7-
# Copyright (C) 2003-2023 The MiG Project lead by Brian Vinter
7+
# Copyright (C) 2003-2025 The MiG Project lead by the Science HPC Center at UCPH
88
#
99
# This file is part of MiG.
1010
#
@@ -1610,7 +1610,7 @@ def main(client_id, user_arguments_dict, environ=None):
16101610
tmptopicfile = write_named_tempfile(configuration, topic_mrsl)
16111611
if not tmptopicfile:
16121612
msg = 'Problem writing temporary topic file on server.'
1613-
logger.error("%s : %s" % msg)
1613+
logger.error(msg)
16141614
output_objects.append(
16151615
{'object_type': 'error_text', 'text': msg})
16161616
return (output_objects, returnvalues.SYSTEM_ERROR)
@@ -1649,13 +1649,12 @@ def main(client_id, user_arguments_dict, environ=None):
16491649
client_addr,
16501650
client_id,
16511651
autologout=True)
1652-
return_url = req_url
1653-
return_query_dict = None
1652+
return_url = req_url.replace(environ.get('SCRIPT_URL', ''),
1653+
configuration.site_autolaunch_page)
16541654
redirect_url = build_autologout_url(configuration,
16551655
environ,
16561656
client_id,
1657-
return_url,
1658-
return_query_dict=return_query_dict)
1657+
return_url)
16591658
elif active_project_client_id:
16601659
dest_op_name = 'fileman'
16611660
redirect_url = requested_page(environ).replace(op_name,
@@ -1674,6 +1673,7 @@ def main(client_id, user_arguments_dict, environ=None):
16741673

16751674
# Generate html
16761675

1676+
validate_msg = ""
16771677
if status:
16781678
(status, validate_msg) = validate_user(configuration,
16791679
client_id,

mig/shared/functionality/logout.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# --- BEGIN_HEADER ---
55
#
66
# logout - force-expire local login session(s)
7-
# Copyright (C) 2003-2025 The MiG Project lead by Brian Vinter
7+
# Copyright (C) 2003-2025 The MiG Project lead by the Science HPC Center at UCPH
88
#
99
# This file is part of MiG.
1010
#
@@ -40,7 +40,8 @@
4040
from mig.shared.functional import validate_input_and_cert
4141
from mig.shared.gdp.all import project_logout, get_client_id_from_project_client_id
4242
from mig.shared.httpsclient import extract_client_id, detect_client_auth, \
43-
require_twofactor_setup, build_logout_url, extract_client_openid
43+
require_twofactor_setup, build_logout_url, extract_client_openid, \
44+
build_autologout_url
4445
from mig.shared.init import initialize_main_variables, find_entry
4546
from mig.shared.useradm import expire_oid_sessions, find_oid_sessions
4647
from mig.shared.url import urlencode
@@ -231,7 +232,18 @@ def main(client_id, user_arguments_dict, environ=None):
231232
% configuration.short_title})
232233
status = returnvalues.CLIENT_ERROR
233234
else:
234-
logout_url = build_logout_url(configuration, environ)
235+
if configuration.site_enable_gdp:
236+
real_user = get_client_id_from_project_client_id(configuration,
237+
client_id)
238+
req_url = environ.get('SCRIPT_URI', '')
239+
return_url = req_url.replace(environ.get('SCRIPT_URL', ''),
240+
configuration.site_autolaunch_page)
241+
logout_url = build_autologout_url(configuration,
242+
environ,
243+
real_user,
244+
return_url)
245+
else:
246+
logout_url = build_logout_url(configuration, environ)
235247
output_objects.append(
236248
{'object_type': 'text', 'text': """Are you sure you want to
237249
log out of %s?""" % configuration.short_title})

0 commit comments

Comments
 (0)