Compare commits
1 Commits
renovate/t
...
d326ae1218
Author | SHA1 | Date | |
---|---|---|---|
d326ae1218 |
668
geneit_app/package-lock.json
generated
668
geneit_app/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -11,20 +11,20 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@emotion/react": "^11.14.0",
|
||||
"@emotion/styled": "^11.14.1",
|
||||
"@emotion/styled": "^11.14.0",
|
||||
"@fontsource/roboto": "^5.2.6",
|
||||
"@fullcalendar/core": "^6.1.18",
|
||||
"@fullcalendar/daygrid": "^6.1.18",
|
||||
"@fullcalendar/interaction": "^6.1.18",
|
||||
"@fullcalendar/list": "^6.1.18",
|
||||
"@fullcalendar/react": "^6.1.18",
|
||||
"@fullcalendar/core": "^6.1.17",
|
||||
"@fullcalendar/daygrid": "^6.1.17",
|
||||
"@fullcalendar/interaction": "^6.1.17",
|
||||
"@fullcalendar/list": "^6.1.17",
|
||||
"@fullcalendar/react": "^6.1.17",
|
||||
"@mdi/js": "^7.4.47",
|
||||
"@mdi/react": "^1.6.1",
|
||||
"@mui/icons-material": "^7.2.0",
|
||||
"@mui/lab": "^7.0.0-beta.14",
|
||||
"@mui/material": "^7.2.0",
|
||||
"@mui/x-data-grid": "^7.29.8",
|
||||
"@mui/x-date-pickers": "^7.29.4",
|
||||
"@mui/icons-material": "^7.0.2",
|
||||
"@mui/lab": "^7.0.0-beta.12",
|
||||
"@mui/material": "^7.0.2",
|
||||
"@mui/x-data-grid": "^7.29.3",
|
||||
"@mui/x-date-pickers": "^7.29.3",
|
||||
"@mui/x-tree-view": "^7.29.1",
|
||||
"date-and-time": "^3.6.0",
|
||||
"dayjs": "^1.11.13",
|
||||
@ -32,25 +32,25 @@
|
||||
"filesize": "^10.1.6",
|
||||
"jspdf": "^3.0.1",
|
||||
"mui-color-input": "^7.0.0",
|
||||
"react": "^19.1.0",
|
||||
"react-dom": "^19.1.0",
|
||||
"react-easy-crop": "^5.4.2",
|
||||
"react-qr-code": "^2.0.18",
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0",
|
||||
"react-easy-crop": "^5.4.1",
|
||||
"react-qr-code": "^2.0.15",
|
||||
"react-router-dom": "^7.4.0",
|
||||
"react-zoom-pan-pinch": "^3.7.0",
|
||||
"svg2pdf.js": "^2.5.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.30.1",
|
||||
"@types/react": "^19.1.8",
|
||||
"@types/react-dom": "^19.1.6",
|
||||
"@vitejs/plugin-react": "^4.6.0",
|
||||
"eslint": "^9.30.1",
|
||||
"@eslint/js": "^9.28.0",
|
||||
"@types/react": "^19.0.12",
|
||||
"@types/react-dom": "^19.0.4",
|
||||
"@vitejs/plugin-react": "^4.4.1",
|
||||
"eslint": "^9.28.0",
|
||||
"eslint-plugin-react-hooks": "^5.2.0",
|
||||
"eslint-plugin-react-refresh": "^0.4.20",
|
||||
"globals": "^16.3.0",
|
||||
"globals": "^16.0.0",
|
||||
"typescript": "^5.8.3",
|
||||
"typescript-eslint": "^8.36.0",
|
||||
"vite": "^6.3.5"
|
||||
"typescript-eslint": "^8.34.0",
|
||||
"vite": "^6.2.3"
|
||||
}
|
||||
}
|
||||
|
20
geneit_backend/Cargo.lock
generated
20
geneit_backend/Cargo.lock
generated
@ -744,9 +744,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "4.5.40"
|
||||
version = "4.5.38"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f"
|
||||
checksum = "ed93b9805f8ba930df42c2590f05453d5ec36cbb85d018868a5b24d31f6ac000"
|
||||
dependencies = [
|
||||
"clap_builder",
|
||||
"clap_derive",
|
||||
@ -754,9 +754,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "clap_builder"
|
||||
version = "4.5.40"
|
||||
version = "4.5.38"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e"
|
||||
checksum = "379026ff283facf611b0ea629334361c4211d1b12ee01024eec1591133b04120"
|
||||
dependencies = [
|
||||
"anstream",
|
||||
"anstyle",
|
||||
@ -766,9 +766,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "clap_derive"
|
||||
version = "4.5.40"
|
||||
version = "4.5.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce"
|
||||
checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7"
|
||||
dependencies = [
|
||||
"heck",
|
||||
"proc-macro2",
|
||||
@ -1056,9 +1056,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "diesel"
|
||||
version = "2.2.11"
|
||||
version = "2.2.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a917a9209950404d5be011c81d081a2692a822f73c3d6af586f0cab5ff50f614"
|
||||
checksum = "ff3e1edb1f37b4953dd5176916347289ed43d7119cc2e6c7c3f7849ff44ea506"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"byteorder",
|
||||
@ -2196,9 +2196,9 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
|
||||
|
||||
[[package]]
|
||||
name = "lettre"
|
||||
version = "0.11.17"
|
||||
version = "0.11.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cb2a0354e9ece2fcdcf9fa53417f6de587230c0c248068eb058fa26c4a753179"
|
||||
checksum = "87ffd14fa289730e3ad68edefdc31f603d56fe716ec38f2076bb7410e09147c2"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"chumsky",
|
||||
|
@ -8,7 +8,7 @@ edition = "2024"
|
||||
[dependencies]
|
||||
log = "0.4.27"
|
||||
env_logger = "0.11.8"
|
||||
clap = { version = "4.5.40", features = ["derive", "env"] }
|
||||
clap = { version = "4.5.38", features = ["derive", "env"] }
|
||||
lazy_static = "1.5.0"
|
||||
lazy-regex = "3.4.1"
|
||||
anyhow = "1.0.98"
|
||||
@ -16,14 +16,14 @@ actix-web = "4.10.2"
|
||||
actix-cors = "0.7.1"
|
||||
actix-multipart = "0.7.2"
|
||||
actix-remote-ip = "0.1.0"
|
||||
futures-util = "0.3.31"
|
||||
diesel = { version = "2.2.11", features = ["postgres"] }
|
||||
futures-util = "0.3.30"
|
||||
diesel = { version = "2.2.10", features = ["postgres"] }
|
||||
diesel_migrations = "2.2.0"
|
||||
serde = { version = "1.0.219", features = ["derive"] }
|
||||
serde_json = "1.0.140"
|
||||
mailchecker = "6.0.17"
|
||||
redis = "0.29.5"
|
||||
lettre = "0.11.17"
|
||||
lettre = "0.11.16"
|
||||
rand = "0.9.1"
|
||||
bcrypt = "0.17.0"
|
||||
light-openid = "1.0.4"
|
||||
|
@ -21,7 +21,7 @@ where
|
||||
if POSTGRES_CONNECTION.with(|i| i.borrow().is_none()) {
|
||||
let database_url = AppConfig::get().db_connection_chain();
|
||||
let conn = PgConnection::establish(&database_url)
|
||||
.unwrap_or_else(|_| panic!("Error connecting to {database_url}"));
|
||||
.unwrap_or_else(|_| panic!("Error connecting to {}", database_url));
|
||||
|
||||
POSTGRES_CONNECTION.with(|i| *i.borrow_mut() = Some(conn))
|
||||
}
|
||||
@ -38,7 +38,7 @@ where
|
||||
POSTGRES_CONNECTION.with(|i| *i.borrow_mut() = None)
|
||||
}
|
||||
|
||||
log::error!("Database query error! {e:?}");
|
||||
log::error!("Database query error! {:?}", e);
|
||||
Err(e.into())
|
||||
}
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ pub async fn create_bucket_if_required() -> anyhow::Result<()> {
|
||||
log::warn!("The bucket does not seem to exists, trying to create it!")
|
||||
}
|
||||
Err(e) => {
|
||||
log::error!("Got unexpected error when querying bucket info: {e}");
|
||||
log::error!("Got unexpected error when querying bucket info: {}", e);
|
||||
return Err(BucketServiceError::FailedFetchBucketInfo.into());
|
||||
}
|
||||
}
|
||||
|
@ -79,7 +79,10 @@ pub async fn request_reset_password(
|
||||
match users_service::get_by_mail(&req.mail).await {
|
||||
Ok(mut user) => users_service::request_reset_password(&mut user).await?,
|
||||
Err(e) => {
|
||||
log::error!("Could not locate user account {e}! (error silently ignored)");
|
||||
log::error!(
|
||||
"Could not locate user account {}! (error silently ignored)",
|
||||
e
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -119,7 +122,7 @@ pub async fn check_reset_password_token(
|
||||
RatedAction::CheckResetPasswordTokenFailed,
|
||||
)
|
||||
.await?;
|
||||
log::error!("Password reset token could not be used: {e}");
|
||||
log::error!("Password reset token could not be used: {}", e);
|
||||
return Ok(HttpResponse::NotFound().finish());
|
||||
}
|
||||
};
|
||||
@ -153,7 +156,7 @@ pub async fn reset_password(remote_ip: RemoteIP, req: web::Json<ResetPasswordBod
|
||||
RatedAction::CheckResetPasswordTokenFailed,
|
||||
)
|
||||
.await?;
|
||||
log::error!("Password reset token could not be used: {e}");
|
||||
log::error!("Password reset token could not be used: {}", e);
|
||||
return Ok(HttpResponse::NotFound().finish());
|
||||
}
|
||||
};
|
||||
@ -193,7 +196,7 @@ pub async fn password_login(remote_ip: RemoteIP, req: web::Json<PasswordLoginQue
|
||||
let user = match users_service::get_by_mail(&req.mail).await {
|
||||
Ok(u) => u,
|
||||
Err(e) => {
|
||||
log::error!("Auth failed: could not find account by mail! {e}");
|
||||
log::error!("Auth failed: could not find account by mail! {}", e);
|
||||
rate_limiter_service::record_action(remote_ip.0, RatedAction::FailedPasswordLogin)
|
||||
.await?;
|
||||
return Ok(HttpResponse::Unauthorized().json("Invalid credentials"));
|
||||
|
@ -183,9 +183,9 @@ pub async fn import_family(
|
||||
}
|
||||
|
||||
if let Err(e) = req_member_data.to_member(member).await {
|
||||
log::error!("Error while processing import (member {req_id:?}) - {e}");
|
||||
log::error!("Error while processing import (member {:?}) - {e}", req_id);
|
||||
return Ok(
|
||||
HttpResponse::BadRequest().json(format!("Failed to validate member {req_id:?}!"))
|
||||
HttpResponse::BadRequest().json(format!("Failed to validate member {:?}!", req_id))
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,7 @@ impl Display for HttpErr {
|
||||
|
||||
impl actix_web::error::ResponseError for HttpErr {
|
||||
fn error_response(&self) -> HttpResponse<BoxBody> {
|
||||
log::error!("Error while processing request! {self}");
|
||||
log::error!("Error while processing request! {}", self);
|
||||
HttpResponse::InternalServerError().body("Failed to execute request!")
|
||||
}
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ impl FromRequest for FamilyAndAccommodationInPath {
|
||||
Self::load_accommodation_from_path(family, accommodation_id)
|
||||
.await
|
||||
.map_err(|e| {
|
||||
log::error!("Failed to extract accommodation ID from URL! {e}");
|
||||
log::error!("Failed to extract accommodation ID from URL! {}", e);
|
||||
actix_web::error::ErrorNotFound("Could not fetch accommodation information!")
|
||||
})
|
||||
})
|
||||
|
@ -85,7 +85,7 @@ impl FromRequest for FamilyAndAccommodationReservationCalendarInPath {
|
||||
Self::load_calendar_from_path(family, accommodation_id)
|
||||
.await
|
||||
.map_err(|e| {
|
||||
log::error!("Failed to extract calendar ID from URL! {e}");
|
||||
log::error!("Failed to extract calendar ID from URL! {}", e);
|
||||
actix_web::error::ErrorNotFound("Could not fetch calendar information!")
|
||||
})
|
||||
})
|
||||
|
@ -95,7 +95,7 @@ impl FromRequest for FamilyAndAccommodationReservationInPath {
|
||||
Self::load_accommodation_reservation_from_path(family, reservation_id)
|
||||
.await
|
||||
.map_err(|e| {
|
||||
log::error!("Failed to extract accommodation ID from URL! {e}");
|
||||
log::error!("Failed to extract accommodation ID from URL! {}", e);
|
||||
actix_web::error::ErrorNotFound("Could not fetch accommodation information!")
|
||||
})
|
||||
})
|
||||
|
@ -71,7 +71,7 @@ impl FromRequest for FamilyAndCoupleInPath {
|
||||
FamilyAndCoupleInPath::load_couple_from_path(family, couple_id)
|
||||
.await
|
||||
.map_err(|e| {
|
||||
log::error!("Failed to extract couple ID from URL! {e}");
|
||||
log::error!("Failed to extract couple ID from URL! {}", e);
|
||||
actix_web::error::ErrorNotFound("Could not fetch couple information!")
|
||||
})
|
||||
})
|
||||
|
@ -62,7 +62,7 @@ impl FromRequest for FamilyInPath {
|
||||
FamilyInPath::load_family_from_path(&token, family_id)
|
||||
.await
|
||||
.map_err(|e| {
|
||||
log::error!("Failed to extract family ID from URL! {e}");
|
||||
log::error!("Failed to extract family ID from URL! {}", e);
|
||||
actix_web::error::ErrorNotFound("Could not fetch family information!")
|
||||
})
|
||||
})
|
||||
|
@ -71,7 +71,7 @@ impl FromRequest for FamilyAndMemberInPath {
|
||||
FamilyAndMemberInPath::load_member_from_path(family, member_id)
|
||||
.await
|
||||
.map_err(|e| {
|
||||
log::error!("Failed to extract member ID from URL! {e}");
|
||||
log::error!("Failed to extract member ID from URL! {}", e);
|
||||
actix_web::error::ErrorNotFound("Could not fetch member information!")
|
||||
})
|
||||
})
|
||||
|
@ -43,7 +43,7 @@ impl User {
|
||||
.as_deref()
|
||||
.map(|hash| {
|
||||
bcrypt::verify(password, hash).unwrap_or_else(|e| {
|
||||
log::error!("Failed to validate password! {e}");
|
||||
log::error!("Failed to validate password! {}", e);
|
||||
false
|
||||
})
|
||||
})
|
||||
|
@ -125,13 +125,13 @@ async fn load_token_info(token: &LoginTokenValue) -> anyhow::Result<Option<Login
|
||||
let token = match user_tokens.iter_mut().find(|t| t.key == key) {
|
||||
Some(t) => t,
|
||||
None => {
|
||||
log::error!("Could not find token for key '{key}' (missing token)");
|
||||
log::error!("Could not find token for key '{}' (missing token)", key);
|
||||
return Ok(None);
|
||||
}
|
||||
};
|
||||
|
||||
if token.is_expired() {
|
||||
log::error!("Could not find token for key '{key}' (token expired)");
|
||||
log::error!("Could not find token for key '{}' (token expired)", key);
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
@ -169,7 +169,7 @@ impl FromRequest for LoginToken {
|
||||
|
||||
let token = match load_token_info(&token).await {
|
||||
Err(e) => {
|
||||
log::error!("Failed to load auth token! {e}");
|
||||
log::error!("Failed to load auth token! {}", e);
|
||||
return Err(actix_web::error::ErrorPreconditionFailed(
|
||||
"Failed to check auth token!",
|
||||
));
|
||||
|
@ -27,7 +27,7 @@ pub async fn send_mail<D: Display>(to: &str, subject: &str, body: D) -> anyhow::
|
||||
let mailer = mailer.build();
|
||||
|
||||
mailer.send(&email)?;
|
||||
log::debug!("A mail was sent to {to} (subject = {subject})");
|
||||
log::debug!("A mail was sent to {} (subject = {})", to, subject);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
@ -168,7 +168,7 @@ pub mod loop_detection {
|
||||
None => false,
|
||||
Some(id) => {
|
||||
if curr_stack.contains(id) {
|
||||
log::debug!("Loop detected! {curr_stack:?}");
|
||||
log::debug!("Loop detected! {:?}", curr_stack);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@ pub fn sha256(bytes: &[u8]) -> String {
|
||||
let mut hasher = Sha256::new();
|
||||
hasher.update(bytes);
|
||||
let h = hasher.finalize();
|
||||
format!("{h:x}")
|
||||
format!("{:x}", h)
|
||||
}
|
||||
|
||||
/// Compute hash of a slice of bytes (sha512)
|
||||
@ -13,5 +13,5 @@ pub fn sha512(bytes: &[u8]) -> String {
|
||||
let mut hasher = Sha512::new();
|
||||
hasher.update(bytes);
|
||||
let h = hasher.finalize();
|
||||
format!("{h:x}")
|
||||
format!("{:x}", h)
|
||||
}
|
||||
|
Reference in New Issue
Block a user