From 118c765b6167e4e8269e5e3d904ef692d4126814 Mon Sep 17 00:00:00 2001 From: Lixian Zhou Date: Mon, 16 Mar 2026 16:18:15 -0400 Subject: [PATCH] fix --- app/controllers/auth.controller.js | 12 +++++++++--- client/src/components/home/layout.js | 8 +++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/controllers/auth.controller.js b/app/controllers/auth.controller.js index b7f58f7..f049de2 100644 --- a/app/controllers/auth.controller.js +++ b/app/controllers/auth.controller.js @@ -119,6 +119,7 @@ const getExternalPermissionBySite = async (externalUserId, site) => { const buildExternalAuthResponse = async (externalUser, site) => { const permissionDoc = await getExternalPermissionBySite(externalUser?.id, site); const permissions = Array.isArray(permissionDoc?.permissions) ? permissionDoc.permissions : []; + const title = permissionDoc?.title || ""; const tokenPayload = { id: `ext:${externalUser?.id}:${site}`, authSource: "external", @@ -129,7 +130,8 @@ const buildExternalAuthResponse = async (externalUser, site) => { name: externalUser?.name || "", firstname: externalUser?.firstname || "", lastname: externalUser?.lastname || "", - status: externalUser?.status || "" + status: externalUser?.status || "", + title }; const accessToken = jwt.sign(tokenPayload, config.secret, { expiresIn: 86400 @@ -145,6 +147,7 @@ const buildExternalAuthResponse = async (externalUser, site) => { name: externalUser?.name || "", firstname: externalUser?.firstname || "", lastname: externalUser?.lastname || "", + title, site: Number(site), status: externalUser?.status || "", auth_source: "external" @@ -185,7 +188,8 @@ exports.login = async (req, res) => { permissions: getEffectivePermissions(localEmployee), id: localEmployee.id, name: localEmployee.name, - name_cn: localEmployee.name_cn + name_cn: localEmployee.name_cn, + title: localEmployee.title || "" }); } if (!activeEmployee) { @@ -253,6 +257,7 @@ exports.me = (req, res) => { name: authPayload?.name || "", firstname: authPayload?.firstname || "", lastname: authPayload?.lastname || "", + title: permissionDoc?.title || authPayload?.title || "", site, status: authPayload?.status || "", auth_source: "external" @@ -281,7 +286,8 @@ exports.me = (req, res) => { permissions: getEffectivePermissions(employee), id: employee.id, name: employee.name, - name_cn: employee.name_cn + name_cn: employee.name_cn, + title: employee.title || "" }); }) .catch((err) => { diff --git a/client/src/components/home/layout.js b/client/src/components/home/layout.js index 896c7c5..63cfb4d 100644 --- a/client/src/components/home/layout.js +++ b/client/src/components/home/layout.js @@ -7,7 +7,9 @@ import { Dropdown } from "react-bootstrap"; function Layout() { const location = useLocation(); const showMenu = location.pathname !== '/login' && location.pathname !== '/landing'; // Example: Hide menu on login page - const user = localStorage.getItem('user'); + const userRaw = localStorage.getItem('user'); + const user = userRaw ? JSON.parse(userRaw) : null; + const displayTitle = (user?.title || user?.roles?.[0] || '').toString(); const getLogoSuffix = () => { return (window.location.hostname.includes('worldshine2.mayo.llc') || window.location.hostname.includes('site2') || window.location.host.includes('ws2') ||window.location.hostname.includes('localhost')) ? "Care LLC" : ((window.location.hostname.includes('worldshine3.mayo.llc') ||window.location.hostname.includes('site3') || window.location.hostname.includes('ws3')) ? "Cloverleaf LLC" : "International LLC"); } @@ -23,8 +25,8 @@ function Layout() {
-
{user && JSON.parse(user)?.username}
-
{user && JSON.parse(user)?.roles[0]}
+
{user?.username}
+
{displayTitle}