From aa44bf04e86f511ac356084927f9ec61e76118ef Mon Sep 17 00:00:00 2001 From: mbecker20 Date: Sun, 11 Aug 2024 05:06:17 -0700 Subject: [PATCH] validate repo builder id in diff (new field) --- bin/core/src/helpers/sync/resources.rs | 7 +++++++ bin/core/src/resource/repo.rs | 28 +++++++++++++++----------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/bin/core/src/helpers/sync/resources.rs b/bin/core/src/helpers/sync/resources.rs index 30998d697..38d7efa01 100644 --- a/bin/core/src/helpers/sync/resources.rs +++ b/bin/core/src/helpers/sync/resources.rs @@ -148,6 +148,13 @@ impl ResourceSync for Repo { .map(|s| s.name.clone()) .unwrap_or_default(); + // Need to replace builder id with name + original.builder_id = resources + .builders + .get(&original.builder_id) + .map(|s| s.name.clone()) + .unwrap_or_default(); + Ok(original.partial_diff(update)) } } diff --git a/bin/core/src/resource/repo.rs b/bin/core/src/resource/repo.rs index 191d1f007..3506fb1ad 100644 --- a/bin/core/src/resource/repo.rs +++ b/bin/core/src/resource/repo.rs @@ -3,6 +3,7 @@ use std::time::Duration; use anyhow::Context; use formatting::format_serror; use monitor_client::entities::{ + builder::Builder, permission::PermissionLevel, repo::{ PartialRepoConfig, Repo, RepoConfig, RepoConfigDiff, RepoInfo, @@ -203,18 +204,21 @@ async fn validate_config( config: &mut PartialRepoConfig, user: &User, ) -> anyhow::Result<()> { - match &config.server_id { - Some(server_id) if !server_id.is_empty() => { - let server = get_check_permissions::( - server_id, - user, - PermissionLevel::Write, - ) - .await - .context("cannot create repo on this server. user must have update permissions on the server.")?; - config.server_id = Some(server.id); - } - _ => {} + if let Some(server_id) = &config.server_id { + let server = get_check_permissions::( + server_id, + user, + PermissionLevel::Write, + ) + .await + .context("Cannot attach repo to this server. User must have write permissions on the server.")?; + config.server_id = Some(server.id); + } + if let Some(builder_id) = &config.builder_id { + let builder = super::get_check_permissions::(builder_id, user, PermissionLevel::Read) + .await + .context("Cannot attach repo to this builder. User must have at least read permissions on the builder.")?; + config.builder_id = Some(builder.id) } Ok(()) }