diff --git a/backend/app/services/disclosure_service.py b/backend/app/services/disclosure_service.py
index 5854a5e..e4614ae 100644
--- a/backend/app/services/disclosure_service.py
+++ b/backend/app/services/disclosure_service.py
@@ -141,14 +141,15 @@ def revoke_disclosure(db: Session, request_id: int, user_id: int, *, admin: bool
def reactivate_disclosure(db: Session, request_id: int) -> DisclosureRequest:
- """Reactivate an expired/revoked disclosure by granting a new 24h window."""
+ """Reactivate an expired, revoked, or rejected disclosure with a new 24h window."""
dr = db.query(DisclosureRequest).filter(DisclosureRequest.id == request_id).first()
if not dr:
raise ValueError("Disclosure request not found")
- if dr.status != "approved":
- raise ValueError("Only approved disclosures can be reactivated")
- if dr.expires_at and dr.expires_at > _utcnow_naive():
+ if dr.status == "pending":
+ raise ValueError("Pending requests must be approved first")
+ if dr.status == "approved" and dr.expires_at and dr.expires_at > _utcnow_naive():
raise ValueError("Disclosure is still active")
+ dr.status = "approved"
dr.expires_at = _utcnow_naive() + timedelta(hours=24)
db.commit()
db.refresh(dr)
diff --git a/frontend/src/pages/DisclosuresPage.tsx b/frontend/src/pages/DisclosuresPage.tsx
index 24ffa33..3a3b87c 100644
--- a/frontend/src/pages/DisclosuresPage.tsx
+++ b/frontend/src/pages/DisclosuresPage.tsx
@@ -160,15 +160,26 @@ export function DisclosuresPage() {
>
)}
{dr.status === 'rejected' && (
-
+ <>
+
+
+ >
)}