rig_onchain_kit/http/
middleware.rs1use actix_web::{web, HttpRequest};
2use anyhow::Result;
3use privy::auth::UserSession;
4
5use super::state::AppState;
6
7pub async fn verify_auth(req: &HttpRequest) -> Result<UserSession> {
8 let token = req
9 .headers()
10 .get("authorization")
11 .and_then(|h| h.to_str().ok())
12 .ok_or_else(|| anyhow::anyhow!("Missing authorization header"))?;
13
14 let token = token
15 .strip_prefix("Bearer ")
16 .ok_or_else(|| anyhow::anyhow!("Invalid authorization format"))?;
17
18 let state = req
19 .app_data::<web::Data<AppState>>()
20 .ok_or_else(|| anyhow::anyhow!("App state not found"))?;
21
22 match state.privy.authenticate_user(token).await {
23 Ok(session) => Ok(session),
24 Err(e) => Err(anyhow::anyhow!("Authentication failed: {}", e)),
25 }
26}