fbc_starter/utils/
http_util.rs

1use crate::constants::{HEADER_KEY_TENANT_ID, HEADER_KEY_UID};
2use crate::error::{AppError, AppResult};
3use axum::http::HeaderMap;
4
5/// 从请求头中获取用户 ID
6pub fn get_uid_from_headers(headers: &HeaderMap) -> AppResult<i64> {
7    let uid_str = headers
8        .get(HEADER_KEY_UID)
9        .and_then(|v| v.to_str().ok())
10        .ok_or(AppError::Unauthorized)?;
11
12    uid_str
13        .parse::<i64>()
14        .map_err(|_| AppError::BadRequest("无效的用户ID".to_string()))
15}
16
17/// 从请求头中获取租户 ID
18pub fn get_tanent_id_from_headers(headers: &HeaderMap) -> AppResult<i64> {
19    let tenant_id_str = headers
20        .get(HEADER_KEY_TENANT_ID)
21        .and_then(|v| v.to_str().ok())
22        .ok_or(AppError::Unauthorized)?;
23
24    tenant_id_str
25        .parse::<i64>()
26        .map_err(|_| AppError::BadRequest("无效的租户ID".to_string()))
27}