diff --git a/frappe/auth.py b/frappe/auth.py index eb41671799..a9dfa6006e 100644 --- a/frappe/auth.py +++ b/frappe/auth.py @@ -53,6 +53,15 @@ class HTTPRequest: # run login triggers if frappe.form_dict.get('cmd')=='login': frappe.local.login_manager.run_trigger('on_session_creation') + self.clear_active_sessions() + + def clear_active_sessions(self): + if not frappe.conf.get("deny_multiple_sessions"): + return + + if frappe.session.user != "Guest": + clear_sessions(frappe.session.user, keep_current=True) + def set_lang(self, lang): from frappe.translate import guess_language_from_http_header diff --git a/frappe/change_log/v5_0/v5_0_0.md b/frappe/change_log/v5_0/v5_0_0.md index 9ee1fc50fb..0353f0d2ed 100644 --- a/frappe/change_log/v5_0/v5_0_0.md +++ b/frappe/change_log/v5_0/v5_0_0.md @@ -1,3 +1,7 @@ ### Custom DocTypes The user can add Custom DocTypes (Forms) without creating a new app by setting **Custom** property. + +### Site Configuration + +- Stop multiple logins for a user by setting `deny_multiple_sessions` in `site_config.json`. [Help on `site_config.json`](https://frappe.io/docs/user-guide/site_config).