PR 3655 regression fixes (#3664)

* chore: undo unintended updater `zip` feature drop, tweak comment

* fix: correct unintended regression on version and project validation

This was caused by a mistake when coalescing mostly copied and pasted
`RE_URL_SAFE` regexes into one.
This commit is contained in:
Alejandro González 2025-05-16 23:44:03 +02:00 committed by GitHub
parent be425cff6f
commit e4f0dddf82
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 26 additions and 7 deletions

20
Cargo.lock generated
View File

@ -4387,7 +4387,7 @@ dependencies = [
"webp",
"woothee",
"yaserde",
"zip",
"zip 3.0.0",
"zxcvbn",
]
@ -8704,6 +8704,7 @@ dependencies = [
"tokio",
"url",
"windows-sys 0.59.0",
"zip 2.4.2",
]
[[package]]
@ -8907,7 +8908,7 @@ dependencies = [
"uuid 1.16.0",
"whoami",
"winreg 0.55.0",
"zip",
"zip 3.0.0",
]
[[package]]
@ -11029,6 +11030,21 @@ dependencies = [
"syn 2.0.101",
]
[[package]]
name = "zip"
version = "2.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50"
dependencies = [
"arbitrary",
"crc32fast",
"crossbeam-utils",
"displaydoc",
"indexmap 2.9.0",
"memchr",
"thiserror 2.0.12",
]
[[package]]
name = "zip"
version = "3.0.0"

View File

@ -135,6 +135,7 @@ tauri-plugin-os = "2.2.1"
tauri-plugin-single-instance = "2.2.3"
tauri-plugin-updater = { version = "2.7.1", default-features = false, features = [
"rustls-tls",
"zip",
] }
tauri-plugin-window-state = "2.2.2"
tempfile = "3.20.0"

View File

@ -88,7 +88,7 @@ rust_decimal = { workspace = true, features = [
"serde-with-float",
"serde-with-str",
] }
redis = { workspace = true, features = ["tokio-comp", "ahash", "r2d2"] } # Locked on 0.29 until deadpool-redis updates to 0.30
redis = { workspace = true, features = ["tokio-comp", "ahash", "r2d2"] }
deadpool-redis.workspace = true
clickhouse = { workspace = true, features = ["uuid", "time"] }
uuid = { workspace = true, features = ["v4", "fast-rng", "serde"] }

View File

@ -135,14 +135,14 @@ pub async fn projects_list(
#[derive(Serialize, Deserialize, Validate)]
pub struct EditUser {
#[validate(length(min = 1, max = 39), regex(path = *crate::util::validate::RE_URL_SAFE))]
#[validate(length(min = 1, max = 39), regex(path = *crate::util::validate::RE_USERNAME))]
pub username: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
with = "::serde_with::rust::double_option"
)]
#[validate(length(min = 1, max = 64), regex(path = *crate::util::validate::RE_URL_SAFE))]
#[validate(length(min = 1, max = 64), regex(path = *crate::util::validate::RE_USERNAME))]
pub name: Option<Option<String>>,
#[serde(
default,

View File

@ -358,7 +358,7 @@ pub async fn orgs_list(
#[derive(Serialize, Deserialize, Validate)]
pub struct EditUser {
#[validate(length(min = 1, max = 39), regex(path = *crate::util::validate::RE_URL_SAFE))]
#[validate(length(min = 1, max = 39), regex(path = *crate::util::validate::RE_USERNAME))]
pub username: Option<String>,
#[serde(
default,

View File

@ -7,7 +7,9 @@ use validator::{ValidationErrors, ValidationErrorsKind};
use crate::models::pats::Scopes;
pub static RE_URL_SAFE: LazyLock<Regex> =
LazyLock::new(|| Regex::new(r"^[a-zA-Z0-9_-]*$").unwrap());
LazyLock::new(|| Regex::new(r#"^[a-zA-Z0-9!@$()`.+,_"-]*$"#).unwrap());
pub static RE_USERNAME: LazyLock<Regex> =
LazyLock::new(|| Regex::new(r#"^[a-zA-Z0-9_-]*$"#).unwrap());
//TODO: In order to ensure readability, only the first error is printed, this may need to be expanded on in the future!
pub fn validation_errors_to_string(