backend/service/
map_access_control.rs1#[cfg(feature = "access_control")]
2use actix_http::StatusCode;
3
4#[cfg(feature = "access_control")]
5use crate::model::entity::Map;
6use crate::{
7 config::{auth::user_info::UserInfo, data::SharedPool},
8 error::ServiceError,
9};
10
11#[cfg(feature = "access_control")]
17pub async fn check_permissions(
18 map_id: i32,
19 pool: &SharedPool,
20 user_info: UserInfo,
21) -> Result<(), ServiceError> {
22 let mut conn = pool.get().await?;
23 let result = Map::find_by_id(map_id, &mut conn).await?;
24 if result.created_by == user_info.id || user_info.is_admin() {
25 Ok(())
26 } else {
27 Err(ServiceError::new(StatusCode::NOT_FOUND, "Map not found"))
28 }
29}
30
31#[cfg(not(feature = "access_control"))]
35pub async fn check_permissions(
36 _map_id: i32,
37 _pool: &SharedPool,
38 _user_info: UserInfo,
39) -> Result<(), ServiceError> {
40 Ok(())
41}