@@ -465,6 +465,12 @@ const InspectionDetailsPanel = ({
465465 const [ showMaintenanceModal , setShowMaintenanceModal ] = useState ( false ) ;
466466 const [ isSavingMaintenance , setIsSavingMaintenance ] = useState ( false ) ;
467467 const [ isReportGenerating , setIsReportGenerating ] = useState ( false ) ;
468+ const [ userRole , setUserRole ] = useState < string | null > ( null ) ;
469+
470+ const isEngineer = useMemo ( ( ) => {
471+ if ( ! userRole ) return false ;
472+ return userRole . trim ( ) . toLowerCase ( ) === "engineer" ;
473+ } , [ userRole ] ) ;
468474
469475 const transformer = useMemo (
470476 ( ) =>
@@ -707,6 +713,12 @@ const InspectionDetailsPanel = ({
707713 setPendingRect ( null ) ;
708714 } ;
709715
716+ useEffect ( ( ) => {
717+ if ( typeof window !== "undefined" ) {
718+ setUserRole ( localStorage . getItem ( "userRole" ) ) ;
719+ }
720+ } , [ ] ) ;
721+
710722 // When switching to a different inspection, reinitialize weather and image state
711723 useEffect ( ( ) => {
712724 setTuneModelEnabled ( true ) ;
@@ -1695,9 +1707,9 @@ const InspectionDetailsPanel = ({
16951707 < button
16961708 type = "button"
16971709 onClick = { openMaintenanceForm }
1698- disabled = { maintenanceLoading }
1710+ disabled = { maintenanceLoading || ! isEngineer }
16991711 className = "inline-flex items-center gap-2 px-3 py-1 text-sm border rounded custombutton disabled:opacity-60 disabled:cursor-not-allowed"
1700- title = "Generate or update a maintenance record for this inspection"
1712+ title = { isEngineer ? "Generate or update a maintenance record for this inspection" : "Only engineers can generate or update maintenance records" }
17011713 >
17021714 < svg
17031715 className = "w-4 h-4"
0 commit comments