diff --git a/frontend/components/Campaigns.tsx b/frontend/components/Campaigns.tsx index 424d7b5..f8ee220 100755 --- a/frontend/components/Campaigns.tsx +++ b/frontend/components/Campaigns.tsx @@ -1025,8 +1025,8 @@ const CampaignDeleteConfirmationModal: React.FC<{ ); }; -const CampaignDetail: React.FC<{ - campaignName: string; +const CampaignDetail: React.FC<{ + campaignName: string; onBack: () => void; onSelectProof: (proof: any) => void; campaignProofs: { [key: string]: any[] }; @@ -1034,7 +1034,8 @@ const CampaignDetail: React.FC<{ dropdownOptions: DropdownOptions; onRetryAnalysis: (campaignName: string, tempId: string) => void; onDeleteProof: (campaignName: string, proofName: string) => void; -}> = ({ campaignName, onBack, onSelectProof, campaignProofs, onProofUpload, dropdownOptions, onRetryAnalysis, onDeleteProof }) => { + readOnly?: boolean; +}> = ({ campaignName, onBack, onSelectProof, campaignProofs, onProofUpload, dropdownOptions, onRetryAnalysis, onDeleteProof, readOnly = false }) => { const [isUploadFormVisible, setIsUploadFormVisible] = useState(false); const [proofToDelete, setProofToDelete] = useState(null); const [proofForUpload, setProofForUpload] = useState(null); @@ -1206,13 +1207,15 @@ const CampaignDetail: React.FC<{ {isExporting ? : } {isExporting ? 'Exporting...' : 'Export Campaign Report'} - + {!readOnly && ( + + )}
@@ -1310,14 +1313,16 @@ const CampaignDetail: React.FC<{
- + {!readOnly && ( + + )} - + {!readOnly && ( + + )}
@@ -1364,7 +1371,8 @@ const ProofDetailView: React.FC<{ onResolveSubmit: (resolveData: Omit) => void; flaggedItems: FlaggedItem[]; resolvedItems: ResolvedItem[]; -}> = ({ campaignName, proof, onBack, onNewVersionUpload, isUploadingNewVersion, onFlagSubmit, onResolveSubmit, flaggedItems, resolvedItems }) => { + readOnly?: boolean; +}> = ({ campaignName, proof, onBack, onNewVersionUpload, isUploadingNewVersion, onFlagSubmit, onResolveSubmit, flaggedItems, resolvedItems, readOnly = false }) => { const getInitialVersionIndex = () => { if (proof.initialVersion && proof.versions) { @@ -1621,24 +1629,26 @@ const ProofDetailView: React.FC<{ )} - + {!readOnly && ( + + )}
= ({ onResolveSubmit={onResolveSubmit} flaggedItems={flaggedItems} resolvedItems={resolvedItems} + readOnly={readOnly} />; } @@ -1791,6 +1802,7 @@ export const Campaigns: React.FC = ({ dropdownOptions={dropdownOptions} onRetryAnalysis={onRetryAnalysis} onDeleteProof={onDeleteProof} + readOnly={readOnly} />; } diff --git a/frontend/contexts/UserContext.tsx b/frontend/contexts/UserContext.tsx index 4232563..4b51410 100644 --- a/frontend/contexts/UserContext.tsx +++ b/frontend/contexts/UserContext.tsx @@ -70,7 +70,7 @@ export const UserProvider: React.FC<{ children: React.ReactNode }> = ({ children isLoading, isSuperAdmin: role === 'super_admin', isOversightAdmin: role === 'oversight_admin', - canWrite: role !== 'oversight_admin' && role != null, + canWrite: role === 'super_admin' || role === 'agency_admin' || role === 'basic_user', canSeeAnalytics: role === 'super_admin' || role === 'oversight_admin' || role === 'agency_admin', canSeeAuditing: role === 'super_admin' || role === 'oversight_admin', canSeeKnowledgeBase: role === 'super_admin',