Compare commits
	
		
			1 Commits
		
	
	
		
			renovate/c
			...
			8984a85d03
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8984a85d03 | 
| @@ -14,7 +14,7 @@ steps: | |||||||
|   - cargo test |   - cargo test | ||||||
|  |  | ||||||
| - name: app_deploy | - name: app_deploy | ||||||
|   image: node:24 |   image: node:23 | ||||||
|   environment: |   environment: | ||||||
|     AWS_ACCESS_KEY_ID: |     AWS_ACCESS_KEY_ID: | ||||||
|       from_secret: AWS_ACCESS_KEY_ID |       from_secret: AWS_ACCESS_KEY_ID | ||||||
|   | |||||||
							
								
								
									
										1371
									
								
								geneit_app/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1371
									
								
								geneit_app/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -12,45 +12,45 @@ | |||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@emotion/react": "^11.14.0", |     "@emotion/react": "^11.14.0", | ||||||
|     "@emotion/styled": "^11.14.1", |     "@emotion/styled": "^11.14.1", | ||||||
|     "@fontsource/roboto": "^5.2.8", |     "@fontsource/roboto": "^5.2.6", | ||||||
|     "@fullcalendar/core": "^6.1.19", |     "@fullcalendar/core": "^6.1.17", | ||||||
|     "@fullcalendar/daygrid": "^6.1.19", |     "@fullcalendar/daygrid": "^6.1.17", | ||||||
|     "@fullcalendar/interaction": "^6.1.19", |     "@fullcalendar/interaction": "^6.1.17", | ||||||
|     "@fullcalendar/list": "^6.1.19", |     "@fullcalendar/list": "^6.1.17", | ||||||
|     "@fullcalendar/react": "^6.1.19", |     "@fullcalendar/react": "^6.1.17", | ||||||
|     "@mdi/js": "^7.4.47", |     "@mdi/js": "^7.4.47", | ||||||
|     "@mdi/react": "^1.6.1", |     "@mdi/react": "^1.6.1", | ||||||
|     "@mui/icons-material": "^7.2.0", |     "@mui/icons-material": "^7.1.2", | ||||||
|     "@mui/lab": "^7.0.0-beta.17", |     "@mui/lab": "^7.0.0-beta.14", | ||||||
|     "@mui/material": "^7.2.0", |     "@mui/material": "^7.1.2", | ||||||
|     "@mui/x-data-grid": "^8.15.0", |     "@mui/x-data-grid": "^7.29.8", | ||||||
|     "@mui/x-date-pickers": "^8.15.0", |     "@mui/x-date-pickers": "^7.29.4", | ||||||
|     "@mui/x-tree-view": "^8.15.0", |     "@mui/x-tree-view": "^7.29.1", | ||||||
|     "date-and-time": "^3.6.0", |     "date-and-time": "^3.6.0", | ||||||
|     "dayjs": "^1.11.18", |     "dayjs": "^1.11.13", | ||||||
|     "email-validator": "^2.0.4", |     "email-validator": "^2.0.4", | ||||||
|     "filesize": "^11.0.13", |     "filesize": "^10.1.6", | ||||||
|     "jspdf": "^3.0.3", |     "jspdf": "^3.0.1", | ||||||
|     "mui-color-input": "^7.0.0", |     "mui-color-input": "^7.0.0", | ||||||
|     "react": "^19.2.0", |     "react": "^19.0.0", | ||||||
|     "react-dom": "^19.2.0", |     "react-dom": "^19.0.0", | ||||||
|     "react-easy-crop": "^5.5.3", |     "react-easy-crop": "^5.4.2", | ||||||
|     "react-qr-code": "^2.0.18", |     "react-qr-code": "^2.0.17", | ||||||
|     "react-router-dom": "^7.4.0", |     "react-router-dom": "^7.4.0", | ||||||
|     "react-zoom-pan-pinch": "^3.7.0", |     "react-zoom-pan-pinch": "^3.7.0", | ||||||
|     "svg2pdf.js": "^2.6.0" |     "svg2pdf.js": "^2.5.0" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@eslint/js": "^9.38.0", |     "@eslint/js": "^9.29.0", | ||||||
|     "@types/react": "^19.2.2", |     "@types/react": "^19.0.12", | ||||||
|     "@types/react-dom": "^19.2.2", |     "@types/react-dom": "^19.0.4", | ||||||
|     "@vitejs/plugin-react": "^4.7.0", |     "@vitejs/plugin-react": "^4.6.0", | ||||||
|     "eslint": "^9.38.0", |     "eslint": "^9.29.0", | ||||||
|     "eslint-plugin-react-hooks": "^5.2.0", |     "eslint-plugin-react-hooks": "^5.2.0", | ||||||
|     "eslint-plugin-react-refresh": "^0.4.24", |     "eslint-plugin-react-refresh": "^0.4.20", | ||||||
|     "globals": "^16.4.0", |     "globals": "^16.0.0", | ||||||
|     "typescript": "^5.9.3", |     "typescript": "^5.8.3", | ||||||
|     "typescript-eslint": "^8.38.0", |     "typescript-eslint": "^8.24.1", | ||||||
|     "vite": "^7.0.6" |     "vite": "^6.3.5" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -137,10 +137,8 @@ function UsersTable(p: { | |||||||
|             <GridActionsCellItem |             <GridActionsCellItem | ||||||
|               icon={<SaveIcon />} |               icon={<SaveIcon />} | ||||||
|               label="Save" |               label="Save" | ||||||
|               material={{ |               sx={{ | ||||||
|                 sx: { |                 color: "primary.main", | ||||||
|                   color: 'primary.main', |  | ||||||
|                 }, |  | ||||||
|               }} |               }} | ||||||
|               onClick={handleSaveClick(id)} |               onClick={handleSaveClick(id)} | ||||||
|             />, |             />, | ||||||
|   | |||||||
							
								
								
									
										477
									
								
								geneit_backend/Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										477
									
								
								geneit_backend/Cargo.lock
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -6,38 +6,38 @@ edition = "2024" | |||||||
| # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | ||||||
|  |  | ||||||
| [dependencies] | [dependencies] | ||||||
| log = "0.4.28" | log = "0.4.27" | ||||||
| env_logger = "0.11.8" | env_logger = "0.11.8" | ||||||
| clap = { version = "4.5.51", features = ["derive", "env"] } | clap = { version = "4.5.40", features = ["derive", "env"] } | ||||||
| lazy_static = "1.5.0" | lazy_static = "1.5.0" | ||||||
| lazy-regex = "3.4.1" | lazy-regex = "3.4.1" | ||||||
| anyhow = "1.0.100" | anyhow = "1.0.98" | ||||||
| actix-web = "4.11.0" | actix-web = "4.10.2" | ||||||
| actix-cors = "0.7.1" | actix-cors = "0.7.1" | ||||||
| actix-multipart = "0.7.2" | actix-multipart = "0.7.2" | ||||||
| actix-remote-ip = "0.1.0" | actix-remote-ip = "0.1.0" | ||||||
| futures-util = "0.3.31" | futures-util = "0.3.31" | ||||||
| diesel = { version = "2.2.12", features = ["postgres"] } | diesel = { version = "2.2.11", features = ["postgres"] } | ||||||
| diesel_migrations = "2.2.0" | diesel_migrations = "2.2.0" | ||||||
| serde = { version = "1.0.228", features = ["derive"] } | serde = { version = "1.0.219", features = ["derive"] } | ||||||
| serde_json = "1.0.145" | serde_json = "1.0.140" | ||||||
| mailchecker = "6.0.19" | mailchecker = "6.0.17" | ||||||
| redis = "0.32.7" | redis = "0.29.5" | ||||||
| lettre = "0.11.19" | lettre = "0.11.17" | ||||||
| rand = "0.9.2" | rand = "0.9.1" | ||||||
| bcrypt = "0.17.1" | bcrypt = "0.17.0" | ||||||
| light-openid = "1.0.4" | light-openid = "1.0.4" | ||||||
| thiserror = "2.0.17" | thiserror = "2.0.12" | ||||||
| serde_with = "3.14.0" | serde_with = "3.12.0" | ||||||
| rust_iso3166 = "0.1.14" | rust_iso3166 = "0.1.14" | ||||||
| rust-s3 = "0.35.1" | rust-s3 = "0.35.1" | ||||||
| sha2 = "0.10.9" | sha2 = "0.10.9" | ||||||
| image = "0.25.8" | image = "0.25.6" | ||||||
| uuid = { version = "1.17.0", features = ["v4"] } | uuid = { version = "1.16.0", features = ["v4"] } | ||||||
| httpdate = "1.0.3" | httpdate = "1.0.3" | ||||||
| zip = "4.3.0" | zip = "2.5.0" | ||||||
| mime_guess = "2.0.5" | mime_guess = "2.0.5" | ||||||
| tempfile = "3.20.0" | tempfile = "3.19.1" | ||||||
| base64 = "0.22.1" | base64 = "0.22.1" | ||||||
| ical = { version = "0.11.0", features = ["generator", "ical", "vcard"] } | ical = { version = "0.11.0", features = ["generator", "ical", "vcard"] } | ||||||
| chrono = "0.4.42" | chrono = "0.4.41" | ||||||
|   | |||||||
| @@ -34,16 +34,18 @@ impl AccommodationRequest { | |||||||
|         } |         } | ||||||
|         accommodation.name = self.name; |         accommodation.name = self.name; | ||||||
|  |  | ||||||
|         if let Some(d) = &self.description |         if let Some(d) = &self.description { | ||||||
|             && !c.accommodation_description_len.validate(d) { |             if !c.accommodation_description_len.validate(d) { | ||||||
|                 return Err(AccommodationListControllerErr::InvalidDescriptionLength.into()); |                 return Err(AccommodationListControllerErr::InvalidDescriptionLength.into()); | ||||||
|             } |             } | ||||||
|  |         } | ||||||
|         accommodation.description.clone_from(&self.description); |         accommodation.description.clone_from(&self.description); | ||||||
|  |  | ||||||
|         if let Some(c) = &self.color |         if let Some(c) = &self.color { | ||||||
|             && !lazy_regex::regex!("[a-fA-F0-9]{6}").is_match(c) { |             if !lazy_regex::regex!("[a-fA-F0-9]{6}").is_match(c) { | ||||||
|                 return Err(AccommodationListControllerErr::MalformedColor.into()); |                 return Err(AccommodationListControllerErr::MalformedColor.into()); | ||||||
|             } |             } | ||||||
|  |         } | ||||||
|         accommodation.color.clone_from(&self.color); |         accommodation.color.clone_from(&self.color); | ||||||
|  |  | ||||||
|         accommodation.need_validation = self.need_validation; |         accommodation.need_validation = self.need_validation; | ||||||
|   | |||||||
| @@ -48,20 +48,23 @@ impl CoupleRequest { | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if let Some(husband) = self.husband |         if let Some(husband) = self.husband { | ||||||
|             && !members_service::exists(couple.family_id(), husband).await? { |             if !members_service::exists(couple.family_id(), husband).await? { | ||||||
|                 return Err(CoupleControllerErr::HusbandNotExisting.into()); |                 return Err(CoupleControllerErr::HusbandNotExisting.into()); | ||||||
|             } |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|         if let Some(d) = &self.wedding |         if let Some(d) = &self.wedding { | ||||||
|             && !d.check() { |             if !d.check() { | ||||||
|                 return Err(CoupleControllerErr::MalformedDateOfWedding.into()); |                 return Err(CoupleControllerErr::MalformedDateOfWedding.into()); | ||||||
|             } |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|         if let Some(d) = &self.divorce |         if let Some(d) = &self.divorce { | ||||||
|             && !d.check() { |             if !d.check() { | ||||||
|                 return Err(CoupleControllerErr::MalformedDateOfDivorce.into()); |                 return Err(CoupleControllerErr::MalformedDateOfDivorce.into()); | ||||||
|             } |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|         couple.set_wife(self.wife); |         couple.set_wife(self.wife); | ||||||
|         couple.set_husband(self.husband); |         couple.set_husband(self.husband); | ||||||
|   | |||||||
| @@ -95,10 +95,11 @@ fn check_opt_str_val( | |||||||
|     c: SizeConstraint, |     c: SizeConstraint, | ||||||
|     err: MemberControllerErr, |     err: MemberControllerErr, | ||||||
| ) -> anyhow::Result<()> { | ) -> anyhow::Result<()> { | ||||||
|     if let Some(v) = val |     if let Some(v) = val { | ||||||
|         && !c.validate(v) { |         if !c.validate(v) { | ||||||
|             return Err(err.into()); |             return Err(err.into()); | ||||||
|         } |         } | ||||||
|  |     } | ||||||
|     Ok(()) |     Ok(()) | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -150,10 +151,11 @@ impl MemberRequest { | |||||||
|             MemberControllerErr::MalformedEmailAddress, |             MemberControllerErr::MalformedEmailAddress, | ||||||
|         )?; |         )?; | ||||||
|  |  | ||||||
|         if let Some(mail) = &self.email |         if let Some(mail) = &self.email { | ||||||
|             && !mailchecker::is_valid(mail) { |             if !mailchecker::is_valid(mail) { | ||||||
|                 return Err(MemberControllerErr::InvalidEmailAddress.into()); |                 return Err(MemberControllerErr::InvalidEmailAddress.into()); | ||||||
|             } |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|         check_opt_str_val( |         check_opt_str_val( | ||||||
|             &self.phone, |             &self.phone, | ||||||
| @@ -185,20 +187,23 @@ impl MemberRequest { | |||||||
|             MemberControllerErr::MalformedCountry, |             MemberControllerErr::MalformedCountry, | ||||||
|         )?; |         )?; | ||||||
|  |  | ||||||
|         if let Some(c) = &self.country |         if let Some(c) = &self.country { | ||||||
|             && !countries_utils::is_code_valid(c) { |             if !countries_utils::is_code_valid(c) { | ||||||
|                 return Err(MemberControllerErr::InvalidCountryCode.into()); |                 return Err(MemberControllerErr::InvalidCountryCode.into()); | ||||||
|             } |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|         if let Some(d) = &self.birth |         if let Some(d) = &self.birth { | ||||||
|             && !d.check() { |             if !d.check() { | ||||||
|                 return Err(MemberControllerErr::MalformedDateOfBirth.into()); |                 return Err(MemberControllerErr::MalformedDateOfBirth.into()); | ||||||
|             } |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|         if let Some(d) = &self.death |         if let Some(d) = &self.death { | ||||||
|             && !d.check() { |             if !d.check() { | ||||||
|                 return Err(MemberControllerErr::MalformedDateOfDeath.into()); |                 return Err(MemberControllerErr::MalformedDateOfDeath.into()); | ||||||
|             } |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|         check_opt_str_val( |         check_opt_str_val( | ||||||
|             &self.note, |             &self.note, | ||||||
| @@ -216,10 +221,11 @@ impl MemberRequest { | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if let Some(father) = self.father |         if let Some(father) = self.father { | ||||||
|             && !members_service::exists(member.family_id(), father).await? { |             if !members_service::exists(member.family_id(), father).await? { | ||||||
|                 return Err(MemberControllerErr::FatherNotExisting.into()); |                 return Err(MemberControllerErr::FatherNotExisting.into()); | ||||||
|             } |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|         member.first_name = self.first_name; |         member.first_name = self.first_name; | ||||||
|         member.last_name = self.last_name; |         member.last_name = self.last_name; | ||||||
|   | |||||||
| @@ -36,15 +36,16 @@ async fn get_photo(id: &PhotoIdPath, full_size: bool, req: HttpRequest) -> HttpR | |||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     // Check if an upload is un-necessary |     // Check if an upload is un-necessary | ||||||
|     if let Some(c) = req.headers().get(header::IF_NONE_MATCH) |     if let Some(c) = req.headers().get(header::IF_NONE_MATCH) { | ||||||
|         && c.to_str().unwrap_or("") == hash { |         if c.to_str().unwrap_or("") == hash { | ||||||
|             return Ok(HttpResponse::NotModified().finish()); |             return Ok(HttpResponse::NotModified().finish()); | ||||||
|         } |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     if let Some(c) = req.headers().get(header::IF_MODIFIED_SINCE) { |     if let Some(c) = req.headers().get(header::IF_MODIFIED_SINCE) { | ||||||
|         let date_str = c.to_str().unwrap_or(""); |         let date_str = c.to_str().unwrap_or(""); | ||||||
|         if let Ok(date) = httpdate::parse_http_date(date_str) |         if let Ok(date) = httpdate::parse_http_date(date_str) { | ||||||
|             && date |             if date | ||||||
|                 .add(Duration::from_secs(1)) |                 .add(Duration::from_secs(1)) | ||||||
|                 .duration_since(UNIX_EPOCH) |                 .duration_since(UNIX_EPOCH) | ||||||
|                 .unwrap() |                 .unwrap() | ||||||
| @@ -53,6 +54,7 @@ async fn get_photo(id: &PhotoIdPath, full_size: bool, req: HttpRequest) -> HttpR | |||||||
|             { |             { | ||||||
|                 return Ok(HttpResponse::NotModified().finish()); |                 return Ok(HttpResponse::NotModified().finish()); | ||||||
|             } |             } | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     let bytes = s3_connection::get_file(&match full_size { |     let bytes = s3_connection::get_file(&match full_size { | ||||||
|   | |||||||
| @@ -149,10 +149,11 @@ pub mod loop_detection { | |||||||
|  |  | ||||||
|     impl LoopStack<'_> { |     impl LoopStack<'_> { | ||||||
|         pub fn contains(&self, id: MemberID) -> bool { |         pub fn contains(&self, id: MemberID) -> bool { | ||||||
|             if let Some(ls) = &self.prev |             if let Some(ls) = &self.prev { | ||||||
|                 && ls.contains(id) { |                 if ls.contains(id) { | ||||||
|                     return true; |                     return true; | ||||||
|                 } |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|             self.curr == id |             self.curr == id | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -64,7 +64,7 @@ fn redis_key(state: &str) -> String { | |||||||
|     format!("oidc-state-{state}") |     format!("oidc-state-{state}") | ||||||
| } | } | ||||||
|  |  | ||||||
| async fn load_provider_info(prov_id: &str) -> anyhow::Result<OpenIDClient<'_>> { | async fn load_provider_info(prov_id: &str) -> anyhow::Result<OpenIDClient> { | ||||||
|     let prov = AppConfig::get() |     let prov = AppConfig::get() | ||||||
|         .openid_providers() |         .openid_providers() | ||||||
|         .into_iter() |         .into_iter() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user