Compare commits

...

2 Commits

Author SHA1 Message Date
73f5edf77f Add session lifetime 2024-04-02 19:57:50 +05:00
c12d7fb01c Add session lifetime 2024-04-02 19:51:28 +05:00
2 changed files with 18 additions and 10 deletions

View File

@ -16,6 +16,7 @@ use {
bb8::Pool, bb8::Pool,
std::sync::Arc, std::sync::Arc,
crate::{ crate::{
time,
double_split, double_split,
}, },
}; };
@ -58,8 +59,8 @@ async fn auth_get(req: Request<Incoming>, pool: DBPool) -> Json {
_ => "" _ => ""
}; };
let res = con.query_parse::<(String, String)>(&query!( let res = con.query_parse::<(String, String, u32)>(&query!(
"SELECT login, uuid FROM bitauth.v0 WHERE session = ?", "SELECT login, uuid, expire FROM bitauth.v0 WHERE session = ?",
session session
)).await; )).await;
let _ = con.query_parse::<()>(&query!( let _ = con.query_parse::<()>(&query!(
@ -67,13 +68,15 @@ async fn auth_get(req: Request<Incoming>, pool: DBPool) -> Json {
session session
)).await; )).await;
let (login, uuid) = match res.is_ok() { let (login, uuid, exp) = match res.is_ok() {
false => ("".to_owned(), "".to_owned()), false => ("".to_owned(), "".to_owned(), 0),
_ => res.unwrap() _ => res.unwrap()
}; };
match login { if login.as_str() == "" || exp < time() {
"" => json!({"error": true, "msg": "Not auth yet"}), json!({"error": true, "msg": "Not auth yet"})
_ => json!({"error": false, "login": login, "uuid": uuid}) }
else {
json!({"error": false, "login": login, "uuid": uuid})
} }
} }

View File

@ -100,6 +100,8 @@ const DB_PASS: &str = "rootpass12345678";
const TOKEN_LIFETIME: u32 = 300; const TOKEN_LIFETIME: u32 = 300;
const REFRESH_LIFETIME: u32 = 2_678_400; const REFRESH_LIFETIME: u32 = 2_678_400;
const APIV0_LIFETIME: u32 = 120;
#[tokio::main] #[tokio::main]
async fn main() -> Result<()> { async fn main() -> Result<()> {
@ -373,11 +375,13 @@ async fn authorize_user(pool: DBPool, token: String, session: String) {
r#"INSERT INTO bitauth.v0 { r#"INSERT INTO bitauth.v0 {
session: ?, session: ?,
login: ?, login: ?,
uuid: ? uuid: ?,
expire: ?,
}"#, }"#,
session, session,
login, login,
uuid uuid,
time() + APIV0_LIFETIME
)).await; )).await;
} }
@ -484,7 +488,8 @@ async fn init_tables(pool: DBPool) -> Res<(), SkyError> {
CREATE MODEL IF NOT EXISTS bitauth.v0( CREATE MODEL IF NOT EXISTS bitauth.v0(
session: string, session: string,
login: string, login: string,
uuid: string uuid: string,
expire: uint32,
) )
"#)).await; "#)).await;