aboutsummaryrefslogtreecommitdiffstats
path: root/src/remake/quarantine.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/remake/quarantine.rs')
-rw-r--r--src/remake/quarantine.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/remake/quarantine.rs b/src/remake/quarantine.rs
index bb34d73..e7214d6 100644
--- a/src/remake/quarantine.rs
+++ b/src/remake/quarantine.rs
@@ -159,7 +159,13 @@ pub(crate) async fn document<H: Host>(State(host): State<H>, Path(id): Path<Stri
}
}
-pub(crate) async fn replay<H: Host>(State(host): State<H>, Path(id): Path<String>) -> Response {
+/// `POST /admin/quarantine/{id}/replay`: the entry's paths written as they were,
+/// by the user who asked (`access::rules` judges the change by them).
+pub(crate) async fn replay<H: Host>(
+ State(host): State<H>,
+ user: Option<axum::Extension<crate::api::auth::AuthenticatedUser>>,
+ Path(id): Path<String>,
+) -> Response {
if !host.is_node_ready().await {
return error_response(StatusCode::SERVICE_UNAVAILABLE, "node is not ready", None);
}
@@ -170,7 +176,8 @@ pub(crate) async fn replay<H: Host>(State(host): State<H>, Path(id): Path<String
let entry = Arc::new(entry);
let replayed = {
let entry = Arc::clone(&entry);
- host.commit_doc(move |doc| {
+ let user = user.map(|axum::Extension(user)| user.0);
+ host.commit_doc_for(user, move |doc| {
// As they are: the operator decided they belong at their old paths.
Ok::<_, StoreError>(delta::replay_paths(
&entry.document,