Fixing /join route, time check was backwards oops and it was set to GET not post
This commit is contained in:
parent
ab1c9e40f7
commit
212173f543
@ -11,7 +11,7 @@ use crate::common::FromDB;
|
||||
use crate::{Response, no_conn};
|
||||
|
||||
#[allow(dead_code)]
|
||||
#[derive(Serialize)]
|
||||
#[derive(Serialize, Debug)]
|
||||
pub struct Invite {
|
||||
pub id: BigInt,
|
||||
pub uses: Option<BigInt>,
|
||||
|
@ -16,6 +16,7 @@ pub type UInteger = u32;
|
||||
|
||||
pub type VarChar = String;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum Response<T> {
|
||||
// A set of rows collected
|
||||
Set(Vec<T>),
|
||||
|
@ -16,6 +16,7 @@ use db::invites::Invite;
|
||||
|
||||
use crate::qs_param;
|
||||
use crate::http;
|
||||
use crate::meta;
|
||||
|
||||
|
||||
/*
|
||||
@ -38,7 +39,8 @@ async fn valid_invite(pool: &Pool, id: BigInt) -> bool {
|
||||
if invite.expires {
|
||||
let now = Utc::now().timestamp();
|
||||
// old?
|
||||
let mut valid_status = now > invite.id;
|
||||
println!("{} {}", now, invite.id);
|
||||
let mut valid_status = now < invite.id;
|
||||
// used?
|
||||
if invite.uses.is_some() && valid_status == false {
|
||||
valid_status = invite.uses.unwrap() <= 0; // safe unwrap since we know its Some(_)
|
||||
@ -68,27 +70,21 @@ async fn use_invite(pool: &Pool, code: Option<BigInt>) -> Option<Member>{
|
||||
// some random comment
|
||||
if valid_invite(pool, id).await {
|
||||
let raw_secret = auth::generate_secret();
|
||||
if let Ok(secret) = auth::encrypt_secret(&raw_secret) {
|
||||
let secret = auth::encrypt_secret(&raw_secret).unwrap();
|
||||
return match db::member::Member::add(pool, "Anonymous".into(), &secret, GENERAL_NEW).await {
|
||||
Ok(response) => {
|
||||
match response {
|
||||
db::Response::Row(member) => Some(member),
|
||||
_ => None,
|
||||
_ => None
|
||||
}
|
||||
},
|
||||
// TODO: logggin or something idk
|
||||
Err(_) => return None
|
||||
}
|
||||
}
|
||||
// Returning None because we couldn't actually create a proper secret to store
|
||||
else {
|
||||
return None;
|
||||
Err(_) => None
|
||||
}
|
||||
}
|
||||
// The invite itself was not valid
|
||||
else {
|
||||
// Returning None because we couldn't actually create a proper secret to store
|
||||
return None;
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn join(pool: &Pool, response: &mut Response<Body>, params: HashMap<String, String>) {
|
||||
@ -112,7 +108,10 @@ pub async fn join(pool: &Pool, response: &mut Response<Body>, params: HashMap<St
|
||||
// Returns a new member if the code is used successfully
|
||||
match use_invite(&pool, code).await {
|
||||
Some(new_account) => {
|
||||
http::set_json_body(response, json!(new_account))
|
||||
http::set_json_body(response, json!({
|
||||
"user": new_account,
|
||||
"server": meta::get_config()
|
||||
}))
|
||||
},
|
||||
None => {
|
||||
*response.status_mut() = StatusCode::NOT_FOUND;
|
||||
|
@ -58,7 +58,7 @@ async fn route_dispatcher(
|
||||
const DELETE: &Method = &Method::DELETE;
|
||||
match (meth, path) {
|
||||
/* INVITES */
|
||||
(GET, routes::INVITE_CREATE) => invites::create(pool, resp, params).await,
|
||||
(POST, routes::INVITE_CREATE) => invites::create(pool, resp, params).await,
|
||||
(GET, routes::INVITE_JOIN) => invites::join(pool, resp, params).await,
|
||||
/* CHANNELS */
|
||||
(GET, routes::CHANNELS_LIST) => channels::list_channels(pool, resp).await,
|
||||
|
Loading…
Reference in New Issue
Block a user