mirror of
https://github.com/danbulant/Portfolio
synced 2026-07-03 01:50:52 +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,
|
Forbidden,
|
||||||
#[error("Session expired, please login again")]
|
#[error("Session expired, please login again")]
|
||||||
ExpiredSession,
|
ExpiredSession,
|
||||||
|
#[error("Missing details")]
|
||||||
|
MissingDetails,
|
||||||
#[error("User already exists")]
|
#[error("User already exists")]
|
||||||
UserAlreadyExists,
|
UserAlreadyExists,
|
||||||
#[error("Candidate not found")]
|
#[error("Candidate not found")]
|
||||||
|
|
@ -82,6 +84,7 @@ impl ServiceError {
|
||||||
// 4XX
|
// 4XX
|
||||||
ServiceError::InvalidApplicationId => 400,
|
ServiceError::InvalidApplicationId => 400,
|
||||||
ServiceError::ParentOverflow => 400,
|
ServiceError::ParentOverflow => 400,
|
||||||
|
ServiceError::MissingDetails => 400,
|
||||||
ServiceError::Unauthorized => 401,
|
ServiceError::Unauthorized => 401,
|
||||||
ServiceError::InvalidCredentials => 401,
|
ServiceError::InvalidCredentials => 401,
|
||||||
ServiceError::ExpiredSession => 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(
|
fn from(
|
||||||
(candidate, parents): (&candidate::Model, Vec<parent::Model>),
|
(candidate, parents): (&candidate::Model, &Vec<parent::Model>),
|
||||||
) -> Self {
|
) -> Self {
|
||||||
let enc_parents = parents.iter()
|
let enc_parents = parents.iter()
|
||||||
.map(|m| EncryptedParentDetails::from(m))
|
.map(|m| EncryptedParentDetails::from(m))
|
||||||
|
|
@ -509,7 +509,7 @@ pub mod tests {
|
||||||
|
|
||||||
let (_, candidate, parents) = put_user_data(&db).await;
|
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
|
let application_details = encrypted_details
|
||||||
.decrypt(PRIVATE_KEY.to_string()) // decrypt with admin's private key
|
.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 candidate = ApplicationService::find_related_candidate(db, application).await?;
|
||||||
|
|
||||||
let parents = Query::find_candidate_parents(db, &candidate).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() {
|
if enc_details.is_filled() {
|
||||||
enc_details.decrypt(private_key).await
|
enc_details.decrypt(private_key).await
|
||||||
|
|
@ -330,7 +330,7 @@ impl ApplicationService {
|
||||||
recipients.append(&mut admin_public_keys);
|
recipients.append(&mut admin_public_keys);
|
||||||
recipients.append(&mut applications.iter().map(|a| a.public_key.to_owned()).collect());
|
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?;
|
.decrypt(admin_private_key).await?;
|
||||||
|
|
||||||
let enc_details = EncryptedApplicationDetails::new(&dec_details, recipients).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)
|
let dec_priv_key = crypto::decrypt_password(application.private_key.clone(), password)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let enc_details = EncryptedApplicationDetails::try_from((&enc_candidate, enc_parent))
|
let enc_details = EncryptedApplicationDetails::try_from((&enc_candidate, &enc_parent))
|
||||||
.ok()
|
.ok()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let dec_details = enc_details.decrypt(dec_priv_key).await.ok().unwrap();
|
let dec_details = enc_details.decrypt(dec_priv_key).await.ok().unwrap();
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ mod tests {
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let priv_key = crypto::decrypt_password(application.private_key.clone(), plain_text_password).await.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()
|
.unwrap()
|
||||||
.decrypt(priv_key)
|
.decrypt(priv_key)
|
||||||
.await
|
.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 candidate = ApplicationService::find_related_candidate(db, &application).await?;
|
||||||
let parents = Query::find_candidate_parents(db, &candidate).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(
|
Ok(d) => ApplicationRow::from(
|
||||||
d.decrypt(private_key.to_string())
|
d.decrypt(private_key.to_string())
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue