From 086692145cc4c0dc3ea72be36e952f7f495eeeaf Mon Sep 17 00:00:00 2001 From: Meng Zhang Date: Fri, 8 Dec 2023 13:59:11 +0800 Subject: [PATCH] implement reset_auth_token --- ee/tabby-webserver/src/service/db/users.rs | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/ee/tabby-webserver/src/service/db/users.rs b/ee/tabby-webserver/src/service/db/users.rs index edfac09..b11ab66 100644 --- a/ee/tabby-webserver/src/service/db/users.rs +++ b/ee/tabby-webserver/src/service/db/users.rs @@ -103,10 +103,24 @@ impl DbConn { Ok(users) } + + pub async fn reset_auth_token(&self, id: i32) -> Result { + self.conn + .call(move |c| { + let mut stmt = c.prepare(r#"UPDATE users SET auth_token = ? WHERE id = ?"#)?; + stmt.execute((Uuid::new_v4().to_string(), id))?; + Ok(()) + }) + .await?; + + Ok(id) + } } #[cfg(test)] mod tests { + use futures::TryFutureExt; + use super::*; use crate::service::db::testutils::create_user; @@ -128,4 +142,18 @@ mod tests { assert!(user.is_none()); } + + #[tokio::test] + async fn test_auth_token() { + let conn = DbConn::new_in_memory().await.unwrap(); + let id = create_user(&conn).await; + + let user = conn.get_user(id).await.unwrap().unwrap(); + assert!(Uuid::parse_str(&user.auth_token).is_ok()); + + conn.reset_auth_token(id).await.unwrap(); + let new_user = conn.get_user(id).await.unwrap().unwrap(); + assert_eq!(user.email, new_user.email); + assert_ne!(user.auth_token, new_user.auth_token); + } }