Fix CCP Metrics page crash for non-Admin users

CCPMetricsPage called isEditor() which does not exist in AuthContext.
Admin users were unaffected due to JS short-circuit evaluation on
isAdmin() || isEditor(). Standard_User accounts hit TypeError because
isEditor was undefined.

Replaced isEditor() with canWrite() which is the correct auth helper
for write-capable users (Admin + Standard_User).

Closes #15
This commit is contained in:
Jordan Ramos
2026-05-20 11:41:40 -06:00
parent 0c99420f17
commit 64d5e0cb40

View File

@@ -1012,7 +1012,7 @@ function DataManagementPanel({ onClose, onDataChanged }) {
// Main Page Component // Main Page Component
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
export default function CCPMetricsPage() { export default function CCPMetricsPage() {
const { isAdmin, isEditor } = useAuth(); const { isAdmin, canWrite } = useAuth();
const [stats, setStats] = useState(null); const [stats, setStats] = useState(null);
const [trend, setTrend] = useState(null); const [trend, setTrend] = useState(null);
const [burndownData, setBurndownData] = useState(null); const [burndownData, setBurndownData] = useState(null);
@@ -1115,7 +1115,7 @@ export default function CCPMetricsPage() {
Cross-organizational compliance posture across all verticals Cross-organizational compliance posture across all verticals
</p> </p>
</div> </div>
{(isAdmin() || isEditor()) && ( {canWrite() && (
<div style={{ display: 'flex', gap: '0.75rem' }}> <div style={{ display: 'flex', gap: '0.75rem' }}>
{isAdmin() && ( {isAdmin() && (
<button <button
@@ -1227,7 +1227,7 @@ export default function CCPMetricsPage() {
<div style={{ fontSize: '0.75rem', color: '#64748B', marginBottom: '1.5rem' }}> <div style={{ fontSize: '0.75rem', color: '#64748B', marginBottom: '1.5rem' }}>
Upload per-vertical compliance xlsx files to generate cross-organizational reports. Upload per-vertical compliance xlsx files to generate cross-organizational reports.
</div> </div>
{(isAdmin() || isEditor()) && ( {canWrite() && (
<button <button
onClick={() => setShowUpload(true)} onClick={() => setShowUpload(true)}
style={{ style={{