From ef67cdd91cac671d71945d8c3026fe463c097b56 Mon Sep 17 00:00:00 2001 From: Rafiafrzl Date: Wed, 1 Oct 2025 10:27:58 +0700 Subject: [PATCH] update layout header --- src/layout/LayoutHeader.jsx | 48 ++++++++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/src/layout/LayoutHeader.jsx b/src/layout/LayoutHeader.jsx index 457db57..0cb0a8a 100644 --- a/src/layout/LayoutHeader.jsx +++ b/src/layout/LayoutHeader.jsx @@ -4,7 +4,7 @@ import { UserOutlined } from '@ant-design/icons'; import handleLogOut from '../Utils/Auth/Logout'; import { useBreadcrumb } from './LayoutBreadcrumb'; import { decryptData } from '../components/Global/Formatter'; -import { replace, useNavigate } from 'react-router-dom'; +import { useNavigate } from 'react-router-dom'; const { Link, Text } = Typography; const { Header } = Layout; @@ -13,18 +13,51 @@ const LayoutHeader = () => { const { breadcrumbItems } = useBreadcrumb(); const navigate = useNavigate(); - // Ambil token warna dari theme Ant Design, dengan fallback default + // Ambil token warna dari theme Ant Design const { token } = theme.useToken() || {}; const colorBgContainer = token?.colorBgContainer || '#fff'; const colorBorder = token?.colorBorder || '#d9d9d9'; const colorText = token?.colorText || '#000'; - // Ambil data user dari localStorage dan dekripsi - const sessionData = localStorage.getItem('session'); - const userData = sessionData ? decryptData(sessionData) : null; + // Ambil data user dari localStorage + let userData = null; - const roleName = userData?.user?.approval || userData?.user?.partner_name || 'Guest'; - const userName = userData?.user?.name || userData?.user?.username || 'User'; + const sessionData = localStorage.getItem('session'); + if (sessionData) { + userData = decryptData(sessionData); + } else { + const userRaw = localStorage.getItem('user'); + if (userRaw) { + try { + // bungkus biar konsisten { user: {...} } + userData = { user: JSON.parse(userRaw) }; + } catch (e) { + console.error('Gagal parse user dari localStorage:', e); + } + } + } + + // console.log('User data di header:', userData?.user); + + // Role handling + const roleNameDefault = + userData?.user?.approval || + userData?.user?.partner_name || + userData?.user?.role_name || + 'Guest'; + + let roleName = roleNameDefault; + const userName = + userData?.user?.name || userData?.user?.username || userData?.user?.user_name || 'User'; + + // Override jika Super Admin + if ( + userData?.user?.is_sa === true || + userData?.user?.is_sa === 'true' || + userData?.user?.is_sa === 1 + ) { + roleName = 'Super Admin'; + } return ( <> @@ -117,4 +150,3 @@ const LayoutHeader = () => { }; export default LayoutHeader; - \ No newline at end of file