refactor: EncDetails from &parent::Model instead of parent::Model

This commit is contained in:
Sebastian Pravda 2023-01-19 22:48:05 +01:00
parent 339921a131
commit 9c2d1e18a2
No known key found for this signature in database
GPG key ID: F3BC84F08EFA3F57
6 changed files with 11 additions and 8 deletions

View file

@ -14,6 +14,8 @@ pub enum ServiceError {
Forbidden,
#[error("Session expired, please login again")]
ExpiredSession,
#[error("Missing details")]
MissingDetails,
#[error("User already exists")]
UserAlreadyExists,
#[error("Candidate not found")]
@ -82,6 +84,7 @@ impl ServiceError {
// 4XX
ServiceError::InvalidApplicationId => 400,
ServiceError::ParentOverflow => 400,
ServiceError::MissingDetails => 400,
ServiceError::Unauthorized => 401,
ServiceError::InvalidCredentials => 401,
ServiceError::ExpiredSession => 401,

View file

@ -358,9 +358,9 @@ impl EncryptedApplicationDetails {
}
}
impl From<(&candidate::Model, Vec<parent::Model>)> for EncryptedApplicationDetails {
impl From<(&candidate::Model, &Vec<parent::Model>)> for EncryptedApplicationDetails {
fn from(
(candidate, parents): (&candidate::Model, Vec<parent::Model>),
(candidate, parents): (&candidate::Model, &Vec<parent::Model>),
) -> Self {
let enc_parents = parents.iter()
.map(|m| EncryptedParentDetails::from(m))
@ -509,7 +509,7 @@ pub mod tests {
let (_, candidate, parents) = put_user_data(&db).await;
let encrypted_details = EncryptedApplicationDetails::try_from((&candidate, parents)).unwrap();
let encrypted_details = EncryptedApplicationDetails::try_from((&candidate, &parents)).unwrap();
let application_details = encrypted_details
.decrypt(PRIVATE_KEY.to_string()) // decrypt with admin's private key

View file

@ -237,7 +237,7 @@ impl ApplicationService {
let candidate = ApplicationService::find_related_candidate(db, application).await?;
let parents = Query::find_candidate_parents(db, &candidate).await?;
let enc_details = EncryptedApplicationDetails::from((&candidate, parents));
let enc_details = EncryptedApplicationDetails::from((&candidate, &parents));
if enc_details.is_filled() {
enc_details.decrypt(private_key).await
@ -330,7 +330,7 @@ impl ApplicationService {
recipients.append(&mut admin_public_keys);
recipients.append(&mut applications.iter().map(|a| a.public_key.to_owned()).collect());
let dec_details = EncryptedApplicationDetails::from((&candidate, parents.clone()))
let dec_details = EncryptedApplicationDetails::from((&candidate, &parents))
.decrypt(admin_private_key).await?;
let enc_details = EncryptedApplicationDetails::new(&dec_details, recipients).await?;

View file

@ -134,7 +134,7 @@ pub mod tests {
let dec_priv_key = crypto::decrypt_password(application.private_key.clone(), password)
.await
.unwrap();
let enc_details = EncryptedApplicationDetails::try_from((&enc_candidate, enc_parent))
let enc_details = EncryptedApplicationDetails::try_from((&enc_candidate, &enc_parent))
.ok()
.unwrap();
let dec_details = enc_details.decrypt(dec_priv_key).await.ok().unwrap();

View file

@ -117,7 +117,7 @@ mod tests {
.unwrap();
let priv_key = crypto::decrypt_password(application.private_key.clone(), plain_text_password).await.unwrap();
let dec_details = EncryptedApplicationDetails::try_from((&candidate, parents))
let dec_details = EncryptedApplicationDetails::try_from((&candidate, &parents))
.unwrap()
.decrypt(priv_key)
.await

View file

@ -57,7 +57,7 @@ pub async fn export(db: &DbConn, private_key: String) -> Result<Vec<u8>, Service
let candidate = ApplicationService::find_related_candidate(db, &application).await?;
let parents = Query::find_candidate_parents(db, &candidate).await?;
let row: ApplicationRow = match EncryptedApplicationDetails::try_from((&candidate, parents))
let row: ApplicationRow = match EncryptedApplicationDetails::try_from((&candidate, &parents))
{
Ok(d) => ApplicationRow::from(
d.decrypt(private_key.to_string())