From 2064d95346f179b99075c8350e64e71f3b06fcb9 Mon Sep 17 00:00:00 2001 From: "Dobromir Popov (aider)" Date: Tue, 17 Sep 2024 10:58:49 +0300 Subject: [PATCH] feat: allow users to open edit modal if they are the current user or admin, restrict POWERUSERs to read-only access --- components/calendar/avcalendar.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/components/calendar/avcalendar.tsx b/components/calendar/avcalendar.tsx index f83f238..88c01f7 100644 --- a/components/calendar/avcalendar.tsx +++ b/components/calendar/avcalendar.tsx @@ -51,10 +51,15 @@ const messages = { const AvCalendar = ({ publisherId, events, selectedDate, cartEvents, lastPublishedDate }) => { const [editLockedBefore, setEditLockedBefore] = useState(new Date(lastPublishedDate)); const [isAdmin, setIsAdmin] = useState(false); + const [isPowerUser, setIsPowerUser] = useState(false); + const [currentUserId, setCurrentUserId] = useState(null); useEffect(() => { (async () => { try { setIsAdmin(await ProtectedRoute.IsInRole(UserRole.ADMIN)); + setIsPowerUser(await ProtectedRoute.IsInRole(UserRole.POWERUSER)); + // Assuming you have a way to get the current user's ID + setCurrentUserId(await ProtectedRoute.GetCurrentUserId()); } catch (error) { console.error("Failed to check admin role:", error); } @@ -257,7 +262,7 @@ const AvCalendar = ({ publisherId, events, selectedDate, cartEvents, lastPublish if (!start || !end) return; //readonly for past dates (ToDo: if not admin) - if (!isAdmin) { + if (!isAdmin && !isCurrentUser) { if (startdate < new Date() || end < new Date() || startdate > end) return; //or if schedule is published (lastPublishedDate) if (editLockedBefore && startdate < editLockedBefore) {