mirror of
https://github.com/danbulant/Portfolio
synced 2026-05-24 12:35:31 +00:00
feat: portfolio encryption
This commit is contained in:
parent
c20f07e268
commit
6d386e90a4
1 changed files with 31 additions and 1 deletions
|
|
@ -138,7 +138,7 @@ impl CandidateService {
|
|||
.is_ok()
|
||||
}
|
||||
|
||||
pub async fn submit_portfolio(candidate_id: i32) -> Result<(), ServiceError> {
|
||||
pub async fn submit_portfolio(candidate_id: i32, db: &DbConn) -> Result<(), ServiceError> {
|
||||
let path = Path::new(&candidate_id.to_string()).to_path_buf();
|
||||
let cache_path = path.join("cache");
|
||||
|
||||
|
|
@ -185,6 +185,36 @@ impl CandidateService {
|
|||
writer.close().await.unwrap();
|
||||
archive.shutdown().await.unwrap();
|
||||
|
||||
let Ok(admin_public_keys) = Query::get_all_admin_public_keys(db).await else {
|
||||
return Err(ServiceError::DbError);
|
||||
};
|
||||
|
||||
let Ok(candidate) = Query::find_candidate_by_id(db, candidate_id).await else {
|
||||
return Err(ServiceError::DbError);
|
||||
};
|
||||
|
||||
let Some(candidate) = candidate else {
|
||||
return Err(ServiceError::UserNotFound);
|
||||
};
|
||||
|
||||
let candidate_public_key = candidate.public_key;
|
||||
|
||||
let mut admin_public_keys_refrence: Vec<&str> =
|
||||
admin_public_keys.iter().map(|s| &**s).collect();
|
||||
|
||||
let mut recipients = vec![&*candidate_public_key];
|
||||
|
||||
recipients.append(&mut admin_public_keys_refrence);
|
||||
|
||||
let Ok(_) = crypto::encrypt_file_with_recipients(
|
||||
path.join("PORTFOLIO.zip"),
|
||||
path.join("PORTFOLIO.zip"),
|
||||
recipients,
|
||||
)
|
||||
.await else {
|
||||
return Err(ServiceError::CryptoEncryptFailed);
|
||||
};
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue