use axum::Json; use axum::extract::State; use export::rest::{AppResponseData, NoData}; use session::Session; use crate::errors::ApiError; use crate::services::AuthService; use crate::services::email::{ResendCodeCmd, ResendCodeResp}; #[utoipa::path( post, path = "/auth/email/resend", tag = "auth", description = "重新发送指定邮箱与用途的验证码,并受发送频率限制。", request_body = ResendCodeCmd, responses( (status = 200, description = "verification code resent", body = AppResponseData), (status = 400, description = "request failed validation", body = AppResponseData) ) )] pub async fn resend_code( State(service): State, session: Session, Json(cmd): Json, ) -> Result, ApiError> { let resp = service .resend_code(&session, cmd) .await .map_err(ApiError::from)?; Ok(AppResponseData::ok(resp)) }