use axum::extract::{Path, State}; use jwt::extractor::AuthUser; use uuid::Uuid; use crate::error::UserResult; use crate::features::UserService; #[utoipa::path( delete, path = "/user/me/email-change/{ticket_id}", tag = "user", params(("ticket_id" = Uuid, Path, description = "Ticket identifier.")), responses((status = 204, description = "Ticket cancelled.")), security(("bearer_auth" = [])), )] pub(crate) async fn handler( State(svc): State, AuthUser { claims }: AuthUser, Path(ticket_id): Path, ) -> UserResult<()> { svc.cancel_email_change(claims.sub, ticket_id).await }