mirror of
https://gitlab.com/fabinfra/fabaccess/bffh.git
synced 2024-12-22 19:53:49 +01:00
improved user lookup by token
This commit is contained in:
parent
d8a7415e24
commit
795c9870e8
@ -146,21 +146,20 @@ impl UserDB {
|
||||
self.db.get(&txn, &uid.as_bytes())
|
||||
}
|
||||
|
||||
pub fn get_by_token(&self, token: &str) -> Result<Option<ArchivedValue<User>>, db::Error> {
|
||||
pub fn get_by_token(&self, token: &str) -> Result<Option<User>, db::Error> {
|
||||
let txn = self.env.begin_ro_txn()?;
|
||||
let mut iter = self.db.get_all(&txn)?.into_iter();
|
||||
return Ok(iter.find_map(|(uid, archived_user)| {
|
||||
let uid = unsafe { std::str::from_utf8_unchecked(uid).to_string() };
|
||||
|
||||
Ok(iter.find_map(|(_, user)| {
|
||||
let user: User =
|
||||
Deserialize::<User, _>::deserialize(archived_user.as_ref(), &mut Infallible).unwrap();
|
||||
if user.userdata.kv.get("cardtoken") == Some(&token.to_string()) {
|
||||
Some(archived_user)
|
||||
Deserialize::<User, _>::deserialize(user.as_ref(), &mut Infallible).unwrap();
|
||||
let stored_token = user.userdata.kv.get("cardtoken")?;
|
||||
if stored_token == &token.to_string() {
|
||||
Some(user)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}));
|
||||
|
||||
Ok(None)
|
||||
}))
|
||||
}
|
||||
|
||||
pub fn put(&self, uid: &str, user: &User) -> Result<(), db::Error> {
|
||||
|
@ -101,9 +101,7 @@ impl Users {
|
||||
|
||||
pub fn get_user_by_token(&self, token: &str) -> Option<db::User> {
|
||||
tracing::trace!(token, "Looking up user by token");
|
||||
self.userdb.get_by_token(token).unwrap().map(|user| {
|
||||
Deserialize::<db::User, _>::deserialize(user.as_ref(), &mut Infallible).unwrap()
|
||||
})
|
||||
self.userdb.get_by_token(token).unwrap()
|
||||
}
|
||||
|
||||
pub fn put_user(&self, uid: &str, user: &db::User) -> Result<(), crate::db::Error> {
|
||||
|
Loading…
Reference in New Issue
Block a user