a06673b
use uuid::Uuid;
use super::{AcceptAgreementCmd, AcceptAgreementResp};
use super::usecase;
use crate::config::AgreementDoc;
use crate::error::AuthError;
use crate::features::AuthService;
impl AuthService {
pub fn list_agreements(&self) -> Vec<AgreementDoc> {
usecase::list_agreements(&self.config)
}
pub async fn accept_agreement(
&self,
user_id: Uuid,
agreement_key: &str,
agreement_version: &str,
) -> Result<AcceptAgreementResp, AuthError> {
let db = self.db.writer();
usecase::accept_agreement(
AcceptAgreementCmd {
user_id,
agreement_key: agreement_key.to_string(),
agreement_version: agreement_version.to_string(),
},
&db,
&self.config,
)
.await
}
/// Internal helper used by other features (register, oauth) to record
/// that a user accepted every currently configured agreement.
pub(crate) async fn record_agreement(
&self,
user_id: Uuid,
key: &str,
version: &str,
) -> Result<(), AuthError> {
let _ = self.accept_agreement(user_id, key, version).await?;
Ok(())
}
}