Skip to content

Commit d194fae

Browse files
committed
coderabbit suggestions
1 parent 4a423fb commit d194fae

3 files changed

Lines changed: 24 additions & 31 deletions

File tree

src/handlers/http/middleware.rs

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ pub fn auth_user_context(
448448
return Ok(rbac::Response::Suspended(msg));
449449
}
450450
let creds = extract_session_key(req);
451-
let user = req.match_info().get("username");
451+
let user = req.match_info().get("userid");
452452
creds.map(|key| Users.authorize(key, action, None, user))
453453
}
454454

@@ -545,7 +545,7 @@ where
545545
forward_ready!(service);
546546

547547
fn call(&self, mut req: ServiceRequest) -> Self::Future {
548-
let err = if let Some((_, hash)) = CLUSTER_SECRET.get() {
548+
let (err, id) = if let Some((secret, _)) = CLUSTER_SECRET.get() {
549549
if let Some(header) = req.headers().get(CLUSTER_SECRET_HEADER)
550550
&& let Some(tenant) = req.headers().get("intra-cluster-tenant")
551551
&& let Some(userid) = req.headers().get("intra-cluster-userid")
@@ -556,7 +556,7 @@ where
556556
// validate the incoming header value
557557
let parsed_hash = PasswordHash::new(incoming_secret).unwrap();
558558
if Argon2::default()
559-
.verify_password(hash.as_bytes(), &parsed_hash)
559+
.verify_password(secret.as_bytes(), &parsed_hash)
560560
.is_ok()
561561
{
562562
// create a user session (how to remove that later?)
@@ -565,7 +565,7 @@ where
565565
} else {
566566
Some(tenant.to_owned())
567567
};
568-
if let Some(user) = Users.get_user(userid, &tenant_id) {
568+
let id = if let Some(user) = Users.get_user(userid, &tenant_id) {
569569
let id = Ulid::new();
570570
req.headers_mut().insert(
571571
header::COOKIE,
@@ -574,18 +574,27 @@ where
574574
let session = SessionKey::SessionId(id);
575575
req.extensions_mut().insert(session.clone());
576576
Users.new_session(&user, session, TimeDelta::seconds(20));
577-
}
578-
None
577+
Some(id)
578+
} else {
579+
None
580+
};
581+
(None, id)
579582
} else {
580-
Some("Incoming intra-cluster request validation failed")
583+
(
584+
Some("Incoming intra-cluster request validation failed"),
585+
None,
586+
)
581587
}
582588
} else {
583-
Some(
584-
"Incoming intra-cluster request doesn't contain the proper header or the server was started without P_CLUSTER_SECRET",
589+
(
590+
Some(
591+
"Incoming intra-cluster request doesn't contain the proper header or the server was started without P_CLUSTER_SECRET",
592+
),
593+
None,
585594
)
586595
}
587596
} else {
588-
None
597+
(None, None)
589598
};
590599

591600
let fut = self.service.call(req);
@@ -594,7 +603,11 @@ where
594603
if let Some(err) = err {
595604
return Err(ErrorUnauthorized(err));
596605
}
597-
fut.await
606+
let res = fut.await;
607+
if let Some(id) = id {
608+
mut_sessions().remove_session(&SessionKey::SessionId(id));
609+
}
610+
res
598611
})
599612
}
600613
}

src/rbac/map.rs

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -304,23 +304,6 @@ impl Sessions {
304304
sessions.retain(|(_, expiry)| expiry < &now);
305305
}
306306

307-
#[inline(always)]
308-
pub fn remove_all_expired_sessions(&mut self, tenant_id: &str) {
309-
let now = Utc::now();
310-
if let Some(user_sessions) = self.user_sessions.get_mut(tenant_id) {
311-
for (_, sessions) in user_sessions.iter_mut() {
312-
sessions.retain(|(s, t)| {
313-
if now > *t {
314-
self.active_sessions.remove(s);
315-
true
316-
} else {
317-
false
318-
}
319-
});
320-
}
321-
}
322-
}
323-
324307
// get permission related to this session
325308
pub fn get(&self, key: &SessionKey) -> Option<&Vec<Permission>> {
326309
self.active_sessions.get(key).map(|(_, _, perms)| perms)

src/rbac/mod.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -225,9 +225,6 @@ impl Users {
225225
let tenant_id = &user.tenant;
226226
let tenant = tenant_id.as_deref().unwrap_or(DEFAULT_TENANT);
227227

228-
// remove stale sessions
229-
mut_sessions().remove_all_expired_sessions(tenant);
230-
231228
mut_sessions().track_new(
232229
user.userid().to_owned(),
233230
session,

0 commit comments

Comments
 (0)