From e17553e185aa6054b229524ac04a2743fe8c6fa9 Mon Sep 17 00:00:00 2001 From: Rishabh Arya Date: Thu, 18 Feb 2021 19:48:14 +0530 Subject: [PATCH] Parse ui_auth.session_timeout as a duration (instead of treating it as ms) (#9426) --- changelog.d/9426.bugfix | 1 + docs/sample_config.yaml | 6 +++--- synapse/config/auth.py | 10 ++++++---- tests/rest/client/v2_alpha/test_auth.py | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) create mode 100644 changelog.d/9426.bugfix diff --git a/changelog.d/9426.bugfix b/changelog.d/9426.bugfix new file mode 100644 index 0000000000..a852a315ad --- /dev/null +++ b/changelog.d/9426.bugfix @@ -0,0 +1 @@ +The `ui_auth.session_timeout` configuration setting can now be specified in terms of number of seconds/minutes/etc/. Contributed by Rishabh Arya. diff --git a/docs/sample_config.yaml b/docs/sample_config.yaml index 13a6f045f9..52380dfb04 100644 --- a/docs/sample_config.yaml +++ b/docs/sample_config.yaml @@ -2228,8 +2228,8 @@ password_config: #require_uppercase: true ui_auth: - # The number of milliseconds to allow a user-interactive authentication - # session to be active. + # The amount of time to allow a user-interactive authentication session + # to be active. # # This defaults to 0, meaning the user is queried for their credentials # before every action, but this can be overridden to allow a single @@ -2240,7 +2240,7 @@ ui_auth: # Uncomment below to allow for credential validation to last for 15 # seconds. # - #session_timeout: 15000 + #session_timeout: "15s" # Configuration for sending emails from Synapse. diff --git a/synapse/config/auth.py b/synapse/config/auth.py index 7fa64b821a..9aabaadf9e 100644 --- a/synapse/config/auth.py +++ b/synapse/config/auth.py @@ -37,7 +37,9 @@ class AuthConfig(Config): # User-interactive authentication ui_auth = config.get("ui_auth") or {} - self.ui_auth_session_timeout = ui_auth.get("session_timeout", 0) + self.ui_auth_session_timeout = self.parse_duration( + ui_auth.get("session_timeout", 0) + ) def generate_config_section(self, config_dir_path, server_name, **kwargs): return """\ @@ -93,8 +95,8 @@ class AuthConfig(Config): #require_uppercase: true ui_auth: - # The number of milliseconds to allow a user-interactive authentication - # session to be active. + # The amount of time to allow a user-interactive authentication session + # to be active. # # This defaults to 0, meaning the user is queried for their credentials # before every action, but this can be overridden to allow a single @@ -105,5 +107,5 @@ class AuthConfig(Config): # Uncomment below to allow for credential validation to last for 15 # seconds. # - #session_timeout: 15000 + #session_timeout: "15s" """ diff --git a/tests/rest/client/v2_alpha/test_auth.py b/tests/rest/client/v2_alpha/test_auth.py index 501f09203f..c26ad824f7 100644 --- a/tests/rest/client/v2_alpha/test_auth.py +++ b/tests/rest/client/v2_alpha/test_auth.py @@ -343,7 +343,7 @@ class UIAuthTests(unittest.HomeserverTestCase): }, ) - @unittest.override_config({"ui_auth": {"session_timeout": 5 * 1000}}) + @unittest.override_config({"ui_auth": {"session_timeout": "5s"}}) def test_can_reuse_session(self): """ The session can be reused if configured.