fix: make rate_limiter respect multitenancy (#24634)
* fix: make rate_limiter respect multitenancy * fix: lower rate limit window for password reset * refactor: Use redis_wrapper
This commit is contained in:
parent
53d6d156ec
commit
a25e68a763
4 changed files with 3 additions and 4 deletions
|
|
@ -238,7 +238,6 @@ frappe.qb.from_(todo).select(todo.name).where(todo.name == "{todo.name}").run()
|
|||
script.execute_method()
|
||||
|
||||
def test_server_script_rate_limiting(self):
|
||||
# why not
|
||||
script1 = frappe.get_doc(
|
||||
doctype="Server Script",
|
||||
name="rate_limited_server_script",
|
||||
|
|
|
|||
|
|
@ -1018,7 +1018,7 @@ def sign_up(email: str, full_name: str, redirect_to: str) -> tuple[int, str]:
|
|||
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
@rate_limit(limit=get_password_reset_limit, seconds=24 * 60 * 60)
|
||||
@rate_limit(limit=get_password_reset_limit, seconds=60 * 60)
|
||||
def reset_password(user: str) -> str:
|
||||
if user == "Administrator":
|
||||
return "not allowed"
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ def rate_limit(
|
|||
if not identity:
|
||||
frappe.throw(_("Either key or IP flag is required."))
|
||||
|
||||
cache_key = f"rl:{frappe.form_dict.cmd}:{identity}"
|
||||
cache_key = frappe.cache.make_key(f"rl:{frappe.form_dict.cmd}:{identity}")
|
||||
|
||||
value = frappe.cache.get(cache_key)
|
||||
if not value:
|
||||
|
|
|
|||
|
|
@ -215,4 +215,4 @@ def get_encryption_key():
|
|||
|
||||
|
||||
def get_password_reset_limit():
|
||||
return frappe.db.get_single_value("System Settings", "password_reset_limit") or 0
|
||||
return frappe.get_system_settings("password_reset_limit") or 3
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue