From 0ea047a776f72227f22487b2a73e8f6366f7ff1d Mon Sep 17 00:00:00 2001 From: sokumon Date: Fri, 19 Dec 2025 20:34:28 +0530 Subject: [PATCH] fix: reroute portal users correctly --- frappe/utils/user.py | 18 ++++++++++++++++++ frappe/website/utils.py | 4 +++- frappe/www/me.html | 9 ++++++++- frappe/www/me.py | 3 ++- frappe/www/portal.html | 2 +- 5 files changed, 32 insertions(+), 4 deletions(-) diff --git a/frappe/utils/user.py b/frappe/utils/user.py index a3cd923a7e..558ce6fff1 100644 --- a/frappe/utils/user.py +++ b/frappe/utils/user.py @@ -441,3 +441,21 @@ def get_users_with_role(role: str) -> list[str]: .distinct() .run(pluck=True) ) + + +def is_portal_user(): + from frappe.utils import has_common + + roles = get_portal_roles() + user_type = frappe.session.data.user_type + if user_type == "Website User" and has_common(frappe.get_roles(), roles): + return True + + +def get_portal_roles(): + roles = [] + for menu_item in frappe.get_single("Portal Settings").menu: + if menu_item.role and menu_item.role not in roles: + roles.append(menu_item.role) + + return roles diff --git a/frappe/website/utils.py b/frappe/website/utils.py index 1118bec946..62e18143f9 100644 --- a/frappe/website/utils.py +++ b/frappe/website/utils.py @@ -20,6 +20,7 @@ from frappe.utils import ( get_system_timezone, md_to_html, ) +from frappe.utils.user import is_portal_user FRONTMATTER_PATTERN = re.compile(r"^\s*(?:---|\+\+\+)(.*?)(?:---|\+\+\+)\s*(.+)$", re.S | re.M) H1_TAG_PATTERN = re.compile("

([^<]*)") @@ -124,9 +125,10 @@ def get_home_page(): home_page = "login" if frappe.session.user == "Guest" else "me" home_page = home_page.strip("/") - if home_page == "me" and frappe.session.data.user_type == "System User": home_page = "desk" + if home_page == "me" and is_portal_user(): + home_page = "portal" return home_page if frappe._dev_server: diff --git a/frappe/www/me.html b/frappe/www/me.html index f4337da7e9..cd18509548 100644 --- a/frappe/www/me.html +++ b/frappe/www/me.html @@ -75,10 +75,17 @@ {{ _("Home") }} - + {% if is_portal_user %} + + + {{ _("Portal") }} + + {% else %} + {{ _("Desktop") }} + {% endif %} {{ _("Logout") }} diff --git a/frappe/www/me.py b/frappe/www/me.py index a709a95a9e..906b2e418f 100644 --- a/frappe/www/me.py +++ b/frappe/www/me.py @@ -2,8 +2,8 @@ # License: MIT. See LICENSE import frappe -import frappe.www.list from frappe import _ +from frappe.utils.user import is_portal_user no_cache = 1 @@ -14,3 +14,4 @@ def get_context(context): context.current_user = frappe.get_doc("User", frappe.session.user) context.show_sidebar = False + context.is_portal_user = is_portal_user() diff --git a/frappe/www/portal.html b/frappe/www/portal.html index 015f4f01cb..2a6820fbea 100644 --- a/frappe/www/portal.html +++ b/frappe/www/portal.html @@ -12,7 +12,7 @@ {% block page_content %} {% if not doctype %} -

Welcome to the Portal

+
Welcome to the Portal
{% else %} {% if introduction %}

{{ introduction }}