MCPcopy Create free account
hub / github.com/cosdata/cosdata / authentication_middleware

Function authentication_middleware

src/api/auth/authentication_middleware.rs:83–108  ·  view source on GitHub ↗
(
    req: &ServiceRequest,
    active_sessions: &DashMap<String, SessionDetails>,
)

Source from the content-addressed store, hash-verified

81}
82
83fn authentication_middleware(
84 req: &ServiceRequest,
85 active_sessions: &DashMap<String, SessionDetails>,
86) -> Result<Claims, AuthError> {
87 let auth_header = req.headers().get(header::AUTHORIZATION);
88 let auth_header = auth_header.ok_or(AuthError::InvalidToken)?;
89 let auth_header = auth_header.to_str().map_err(|_| AuthError::InvalidToken)?;
90
91 let mut header = auth_header.split_whitespace();
92 let (_, access_token) = (header.next(), header.next().ok_or(AuthError::InvalidToken)?);
93 let session = active_sessions
94 .get(access_token)
95 .ok_or(AuthError::InvalidToken)?;
96 let current_time = get_current_timestamp();
97 if current_time >= session.expires_at {
98 drop(session);
99 active_sessions.remove(access_token);
100 return Err(AuthError::InvalidToken);
101 }
102 let claims = Claims {
103 iat: session.created_at,
104 exp: session.expires_at,
105 username: session.user.username.clone(),
106 };
107 Ok(claims)
108}

Callers 1

callMethod · 0.85

Calls 5

removeMethod · 0.80
cloneMethod · 0.80
get_current_timestampFunction · 0.50
getMethod · 0.45
nextMethod · 0.45

Tested by

no test coverage detected