mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2025-09-25 22:29:45 +00:00
Add support for admin routes
This commit is contained in:
@@ -18,7 +18,7 @@ use crate::data::base_request_handler::{BaseRequestHandler, PostFile, RequestVal
|
||||
use crate::data::config::Config;
|
||||
use crate::data::http_request_handler::HttpRequestHandler;
|
||||
use crate::helpers::{api_helper, requests_limit_helper};
|
||||
use crate::routes::{get_routes, RequestResult, Route};
|
||||
use crate::routes::{get_routes, RequestResult, Route, RouteScope};
|
||||
use crate::routes::Method::{GET, POST};
|
||||
use crate::utils::user_data_utils::user_data_path;
|
||||
|
||||
@@ -209,14 +209,33 @@ fn process_simple_route(route: &Route, req: &mut HttpRequestHandler) -> RequestR
|
||||
req.too_many_requests("Too many request. Please try again later.")?;
|
||||
}
|
||||
|
||||
// Validate client token
|
||||
req.check_client_token()?;
|
||||
// Check if the user is allowed to access the route
|
||||
match route.scope {
|
||||
|
||||
// Check user token, if required
|
||||
if route.need_login || req.has_post_parameter("userToken1") {
|
||||
req.check_user_token()?;
|
||||
// "Normal" user route
|
||||
RouteScope::USER => {
|
||||
// Validate client token
|
||||
req.check_client_token()?;
|
||||
|
||||
// Check user token, if required
|
||||
if route.need_login || req.has_post_parameter("token") {
|
||||
req.check_user_token()?;
|
||||
}
|
||||
},
|
||||
|
||||
// "Admin" user scope
|
||||
RouteScope::ADMIN => {
|
||||
req.check_admin_origin()?;
|
||||
|
||||
if route.need_login {
|
||||
// TODO : implement
|
||||
unimplemented!();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
let res: RequestResult = (route.func)(req);
|
||||
|
||||
requests_limit_helper::trigger_after(res.is_ok(), req, route)?;
|
||||
@@ -250,7 +269,7 @@ async fn process_request(custom_req: CustomRequest) -> HttpResponse {
|
||||
|
||||
// Check if a route was found
|
||||
if let None = route {
|
||||
return HttpResponse::NotFound().json(HttpError::not_found("Method not found!"));
|
||||
return HttpResponse::NotFound().json(HttpError::not_found("Route not found!"));
|
||||
}
|
||||
let route = route.unwrap();
|
||||
|
||||
|
Reference in New Issue
Block a user