use axum::extract::State; use jwt::extractor::AuthUser; use crate::error::AuthError; use crate::features::AuthService; use export::auth::agreement::{AcceptAgreementCmd, AcceptAgreementResp}; use export::data::{AppRequest, AppRequestData, AppResponseData}; #[utoipa::path( post, path = "/auth/agreements/accept", tag = "auth", request_body = AppRequestData, responses( (status = 200, description = "Agreement acceptance recorded.", body = AppResponseData), (status = 400, description = "Unknown agreement key or version mismatch.", body = super::super::openapi::ErrorBody), (status = 401, description = "Missing or invalid access token.", body = super::super::openapi::ErrorBody), (status = 404, description = "User not found.", body = super::super::openapi::ErrorBody), ), security( ("bearer_auth" = []), ), )] pub(crate) async fn handler( State(svc): State, AuthUser { claims: _claims }: AuthUser, cmd: AppRequest, ) -> Result, AuthError> { let resp = svc .accept_agreement(cmd.user_id, &cmd.agreement_key, &cmd.agreement_version) .await?; Ok(AppResponseData::ok(resp)) }