All changes
This commit is contained in:
parent
593f380581
commit
49f7ec2f5a
60 changed files with 1783 additions and 679 deletions
|
|
@ -8,11 +8,11 @@ use crate::consts::FREE_ZONE_BOUNDS;
|
|||
/// Check whether the user is allowed to query data at the given bounds.
|
||||
/// Licensed users and admins bypass the check entirely.
|
||||
/// Free/anonymous users get 403 if bounds exceed the free zone.
|
||||
#[allow(clippy::result_large_err)]
|
||||
pub fn check_license_bounds(
|
||||
user: &Option<PocketBaseUser>,
|
||||
bounds: (f64, f64, f64, f64),
|
||||
) -> Result<(), (StatusCode, axum::response::Response)> {
|
||||
// Licensed users and admins can query anywhere
|
||||
) -> Result<(), axum::response::Response> {
|
||||
if let Some(u) = user {
|
||||
if u.is_admin || u.subscription == "licensed" {
|
||||
return Ok(());
|
||||
|
|
@ -22,7 +22,6 @@ pub fn check_license_bounds(
|
|||
let (south, west, north, east) = bounds;
|
||||
let (fz_south, fz_west, fz_north, fz_east) = FREE_ZONE_BOUNDS;
|
||||
|
||||
// Check if requested bounds are fully within the free zone
|
||||
if south >= fz_south && west >= fz_west && north <= fz_north && east <= fz_east {
|
||||
return Ok(());
|
||||
}
|
||||
|
|
@ -38,18 +37,15 @@ pub fn check_license_bounds(
|
|||
}
|
||||
});
|
||||
|
||||
Err((
|
||||
StatusCode::FORBIDDEN,
|
||||
(StatusCode::FORBIDDEN, axum::Json(body)).into_response(),
|
||||
))
|
||||
Err((StatusCode::FORBIDDEN, axum::Json(body)).into_response())
|
||||
}
|
||||
|
||||
/// Convenience wrapper that takes a point (lat, lon) instead of bounds.
|
||||
/// Used for endpoints that operate on a single location (e.g. postcode stats).
|
||||
#[allow(clippy::result_large_err)]
|
||||
pub fn check_license_point(
|
||||
user: &Option<PocketBaseUser>,
|
||||
lat: f64,
|
||||
lon: f64,
|
||||
) -> Result<(), (StatusCode, axum::response::Response)> {
|
||||
) -> Result<(), axum::response::Response> {
|
||||
check_license_bounds(user, (lat, lon, lat, lon))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue