perf: Do not set same cookies on every request (#29218)
This commit is contained in:
parent
bef7393753
commit
800ff70af1
1 changed files with 15 additions and 7 deletions
|
|
@ -2,7 +2,7 @@
|
||||||
# MIT License. See LICENSE
|
# MIT License. See LICENSE
|
||||||
import base64
|
import base64
|
||||||
import binascii
|
import binascii
|
||||||
from urllib.parse import quote, urlencode, urlparse
|
from urllib.parse import quote, unquote, urlencode, urlparse
|
||||||
|
|
||||||
from werkzeug.wrappers import Response
|
from werkzeug.wrappers import Response
|
||||||
|
|
||||||
|
|
@ -190,12 +190,12 @@ class LoginManager:
|
||||||
self.full_name = " ".join(filter(None, [self.info.first_name, self.info.last_name]))
|
self.full_name = " ".join(filter(None, [self.info.first_name, self.info.last_name]))
|
||||||
|
|
||||||
if self.info.user_type == "Website User":
|
if self.info.user_type == "Website User":
|
||||||
frappe.local.cookie_manager.set_cookie("system_user", "no")
|
frappe.local.cookie_manager.set_cookie("system_user", "no", deduplicate=True)
|
||||||
if not resume:
|
if not resume:
|
||||||
frappe.local.response["message"] = "No App"
|
frappe.local.response["message"] = "No App"
|
||||||
frappe.local.response["home_page"] = get_default_path() or "/" + get_home_page()
|
frappe.local.response["home_page"] = get_default_path() or "/" + get_home_page()
|
||||||
else:
|
else:
|
||||||
frappe.local.cookie_manager.set_cookie("system_user", "yes")
|
frappe.local.cookie_manager.set_cookie("system_user", "yes", deduplicate=True)
|
||||||
if not resume:
|
if not resume:
|
||||||
frappe.local.response["message"] = "Logged In"
|
frappe.local.response["message"] = "Logged In"
|
||||||
frappe.local.response["home_page"] = get_default_path() or "/app"
|
frappe.local.response["home_page"] = get_default_path() or "/app"
|
||||||
|
|
@ -208,10 +208,10 @@ class LoginManager:
|
||||||
frappe.local.response["redirect_to"] = redirect_to
|
frappe.local.response["redirect_to"] = redirect_to
|
||||||
frappe.cache.hdel("redirect_after_login", self.user)
|
frappe.cache.hdel("redirect_after_login", self.user)
|
||||||
|
|
||||||
frappe.local.cookie_manager.set_cookie("full_name", self.full_name)
|
frappe.local.cookie_manager.set_cookie("full_name", self.full_name, deduplicate=True)
|
||||||
frappe.local.cookie_manager.set_cookie("user_id", self.user)
|
frappe.local.cookie_manager.set_cookie("user_id", self.user, deduplicate=True)
|
||||||
frappe.local.cookie_manager.set_cookie("user_image", self.info.user_image or "")
|
frappe.local.cookie_manager.set_cookie("user_image", self.info.user_image or "", deduplicate=True)
|
||||||
frappe.local.cookie_manager.set_cookie("user_lang", frappe.local.lang)
|
frappe.local.cookie_manager.set_cookie("user_lang", frappe.local.lang, deduplicate=True)
|
||||||
|
|
||||||
def clear_preferred_language(self):
|
def clear_preferred_language(self):
|
||||||
frappe.local.cookie_manager.delete_cookie("preferred_language")
|
frappe.local.cookie_manager.delete_cookie("preferred_language")
|
||||||
|
|
@ -387,9 +387,17 @@ class CookieManager:
|
||||||
httponly=False,
|
httponly=False,
|
||||||
samesite="Lax",
|
samesite="Lax",
|
||||||
max_age=None,
|
max_age=None,
|
||||||
|
deduplicate=False,
|
||||||
):
|
):
|
||||||
if not secure and hasattr(frappe.local, "request"):
|
if not secure and hasattr(frappe.local, "request"):
|
||||||
secure = frappe.local.request.scheme == "https"
|
secure = frappe.local.request.scheme == "https"
|
||||||
|
if (
|
||||||
|
deduplicate
|
||||||
|
and not (expires or max_age)
|
||||||
|
and (request := getattr(frappe.local, "request", None))
|
||||||
|
and unquote(request.cookies.get(key, "")) == value
|
||||||
|
):
|
||||||
|
return
|
||||||
|
|
||||||
self.cookies[key] = {
|
self.cookies[key] = {
|
||||||
"value": value,
|
"value": value,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue