mirror of
https://github.com/danbulant/Portfolio
synced 2026-06-17 13:31:12 +00:00
refactor: EncDetails from &parent::Model instead of parent::Model
This commit is contained in:
parent
339921a131
commit
9c2d1e18a2
6 changed files with 11 additions and 8 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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?;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
|
|
|
|||
Loading…
Reference in a new issue