I broke all :3
This commit is contained in:
parent
b577904d75
commit
030dd43ddf
5
TODO
5
TODO
@ -1,3 +1,8 @@
|
|||||||
|
############################
|
||||||
|
### MAKE USER UUID TABLE ###
|
||||||
|
############################
|
||||||
|
|
||||||
|
|
||||||
Auth using tokens
|
Auth using tokens
|
||||||
Auth using uniq id on device
|
Auth using uniq id on device
|
||||||
Auth using QR code
|
Auth using QR code
|
||||||
|
115
src/main.rs
115
src/main.rs
@ -165,26 +165,121 @@ async fn handle_connection(req: Request<Incoming>, pool: DBPool, ip: String) ->
|
|||||||
|
|
||||||
let cookies = get_cookies(req.headers().clone());
|
let cookies = get_cookies(req.headers().clone());
|
||||||
let token = cookies.get("token");
|
let token = cookies.get("token");
|
||||||
let token = match token.is_none() {
|
let mut token = match token.is_none() {
|
||||||
false => token.unwrap(),
|
false => token.unwrap(),
|
||||||
_ => ""
|
_ => ""
|
||||||
};
|
};
|
||||||
|
let mut logged = false;
|
||||||
|
|
||||||
match <str as AsRef<str>>::as_ref(req.uri().path()) {
|
match <str as AsRef<str>>::as_ref(req.uri().path()) {
|
||||||
x if x.starts_with("/api/") => {}
|
x if x.starts_with("/api/") => {},
|
||||||
_ => {
|
_ => 'jwt_check: {
|
||||||
// println!("{}", token);
|
// if token == "" { break 'jwt_check; }
|
||||||
|
/* if token != "" {
|
||||||
if token != "" && jwt_verify(pool.clone(), token)
|
|
||||||
.await?.claims.as_object().unwrap().len() == 0
|
|
||||||
{
|
|
||||||
println!("Invalid suka");
|
|
||||||
parts.status = StatusCode::FOUND;
|
parts.status = StatusCode::FOUND;
|
||||||
set_cookie(&mut headers, "token", "");
|
set_cookie(&mut headers, "token", "");
|
||||||
set_location(&mut headers, "/");
|
set_location(&mut headers, "/login");
|
||||||
parts.headers = headers;
|
parts.headers = headers;
|
||||||
return Ok(Response::from_parts(parts, Full::new(Bytes::new())));
|
return Ok(Response::from_parts(parts, Full::new(Bytes::new())));
|
||||||
|
}*/
|
||||||
|
|
||||||
|
let is_live = jwt_verify(pool.clone(), token)
|
||||||
|
.await?
|
||||||
|
.claims
|
||||||
|
.as_object()
|
||||||
|
.unwrap()
|
||||||
|
.len() != 0;
|
||||||
|
|
||||||
|
match is_live {
|
||||||
|
true => { logged = true; },
|
||||||
|
_ => 'ref_check: {
|
||||||
|
let reftoken = cookies.get("refresh");
|
||||||
|
let reftoken = match reftoken.is_none() {
|
||||||
|
false => reftoken.unwrap(),
|
||||||
|
_ => ""
|
||||||
|
};
|
||||||
|
|
||||||
|
if reftoken == "" { break 'ref_check; }
|
||||||
|
|
||||||
|
let ref_data: HashMap<String, Json> = jwt_verify(pool.clone(), reftoken)
|
||||||
|
.await?
|
||||||
|
.claims
|
||||||
|
.as_object()
|
||||||
|
.unwrap()
|
||||||
|
.clone()
|
||||||
|
.into_iter()
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
if ref_data.clone().len() != 0 {
|
||||||
|
let mut con = pool.get().await.unwrap();
|
||||||
|
|
||||||
|
let tokenid = ref_data.get("uuid").unwrap().as_str().unwrap();
|
||||||
|
let newtok = format!("{}", uuid_v4().as_hyphenated());
|
||||||
|
let newref = format!("{}", uuid_v4().as_hyphenated());
|
||||||
|
let time = time();
|
||||||
|
println!("Penis1");
|
||||||
|
let (uuid,) = con.query_parse::<(String,)>(&query!(
|
||||||
|
r#"
|
||||||
|
SELECT uid
|
||||||
|
FROM bitauth.tokens
|
||||||
|
WHERE uuid = ?
|
||||||
|
"#,
|
||||||
|
tokenid
|
||||||
|
)).await?;
|
||||||
|
println!("Penis2");
|
||||||
|
let (login,) = con.query_parse::<(String,)>(&query!(
|
||||||
|
r#"
|
||||||
|
SELECT login
|
||||||
|
FROM bitauth.users
|
||||||
|
WHERE uuid = ?
|
||||||
|
"#,
|
||||||
|
uuid.clone()
|
||||||
|
)).await?;
|
||||||
|
println!("Penis3");
|
||||||
|
let _ = con.query_parse::<()>(&query!(
|
||||||
|
r#"
|
||||||
|
UPDATE bitauth.tokens
|
||||||
|
SET uuid = ?, ref = ?, refend = ?
|
||||||
|
WHERE uuid = ?
|
||||||
|
"#,
|
||||||
|
newtok.clone(), newref.clone(), time + REFRESH_LIFETIME, tokenid
|
||||||
|
)).await;
|
||||||
|
println!("Penis4");
|
||||||
|
|
||||||
|
set_cookie(&mut headers, "token",
|
||||||
|
&jwt_sign(pool.clone(), json!({
|
||||||
|
"login": login.clone(),
|
||||||
|
"uuid": uuid.clone(),
|
||||||
|
"iat": time,
|
||||||
|
"exp": time + TOKEN_LIFETIME
|
||||||
|
})).await.unwrap()
|
||||||
|
);
|
||||||
|
set_cookie(&mut headers, "refresh",
|
||||||
|
&jwt_sign(pool.clone(), json!({
|
||||||
|
"uuid": newtok.clone(),
|
||||||
|
"iat": time,
|
||||||
|
"ref": newref.clone(),
|
||||||
|
"exp": time + REFRESH_LIFETIME
|
||||||
|
})).await.unwrap()
|
||||||
|
);
|
||||||
|
println!("Penis5");
|
||||||
|
|
||||||
|
logged = true;
|
||||||
|
/*
|
||||||
|
CREATE MODEL IF NOT EXISTS bitauth.tokens(
|
||||||
|
uuid: string,
|
||||||
|
uid: string,
|
||||||
|
sid: string,
|
||||||
|
ref: string,
|
||||||
|
refend: uint32
|
||||||
|
)
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if x == "/authorize" {
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user