From 5652388f4cbc959f1d47210bb06dbeaef3ecaa11 Mon Sep 17 00:00:00 2001 From: shockrah Date: Tue, 5 May 2020 23:20:47 -0700 Subject: [PATCH] /join 'ing for new users code steramlined a bit *mostly a coding qol change --- server/src/auth.rs | 19 +++++++++++++------ server/src/rand_utils.rs | 24 ++++++++++-------------- server/src/users.rs | 3 +++ 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/server/src/auth.rs b/server/src/auth.rs index b856d16..5f8f67a 100644 --- a/server/src/auth.rs +++ b/server/src/auth.rs @@ -1,6 +1,7 @@ // Handlers for the base auth routes -use crate::users; +use crate::users{self, Member}; use std::{error, fmt}; +use crate::rand_utils::new_key; #[derive(FromForm)] @@ -39,15 +40,19 @@ impl<'r> Responder<'r> for AuthErr { } } +/* #[post("/login")] pub fn login() { } +*/ -#[post("/join", data="")] -pub fn join(conn: DBConn, params: JoinParams) -> AuthResult, AuthErr>{ + +#[post("/join", data="")] +pub fn join(conn: DBConn, params: JoinParams) -> AuthResult, AuthErr>{ /* * Requires -> body * Requires -> body + * Struct JoinParams enforces this for us so if something is missing then rocket should 404 */ const expired: &'static str = "Invite expired"; const negate: &'static str = "Malformed request"; @@ -58,13 +63,13 @@ pub fn join(conn: DBConn, params: JoinParams) -> AuthResult, AuthErr>{ if let Ok(data) = diesel_result { match data.uses { 1 ... std::i32::MAX => { - let user = users::new_user(); + let new_user = users::new_member(conn): // update the uses counter diesel::update(users.filter(userid.eq(user.userid))) .set(uses.eq(data.uses - 1)) .execute(&conn.0) - AuthResult(Json(user)) + AuthResult(Json(new_user)) } // The invite has been used up and thus should be removed std::i32::MIN ... 0 => { @@ -81,6 +86,8 @@ pub fn join(conn: DBConn, params: JoinParams) -> AuthResult, AuthErr>{ } } +/* + #[post("/leave", data = "<>")] pub fn leave() { } @@ -89,4 +96,4 @@ pub fn leave() { pub fn close() { } - +*/ \ No newline at end of file diff --git a/server/src/rand_utils.rs b/server/src/rand_utils.rs index 6daf186..a34b5da 100644 --- a/server/src/rand_utils.rs +++ b/server/src/rand_utils.rs @@ -9,19 +9,15 @@ pub fn new_user_id() -> u64 { } } -pub fn new_key() -> String { // Returns a random string which we later hash with bcrypt - let mut raw_slice = [0u8; 32]; - if let Ok(_ignored) = getrandom(&mut raw_slice) { - let mut buf = String::new(); - for i in raw_slice.iter() { - let mut cv: u8 = *i; - if cv > 126 { cv %= 126; } - if cv < 33 { cv += 34; } - buf.push(cv as char); - } - buf - } - else { - "".into() // like with new_user_id if this really fires we're screwed anyway +pub fn new_key() -> String { + let mut raw_slice = [0u8; 64]; + let _ignored = getrandom(&mut raw_slice).unwrap(); + let mut buf = String::new(); + for i in raw_slice.iter() { + let mut cv: u8 = *i; + if cv > 126 { cv %= 126; } + if cv < 33 { cv += 34; } + buf.push(cv as char); } + buf } \ No newline at end of file diff --git a/server/src/users.rs b/server/src/users.rs index a69edc9..d79054d 100644 --- a/server/src/users.rs +++ b/server/src/users.rs @@ -8,6 +8,9 @@ use diesel::{self, prelude::*}; use diesel::result::Error; pub fn create_new_user(conn: DBConn, name: String) -> User { + /* + * Should only eveer be called under good circumstances + */ use schema::users::dsl::*; use diesel::result::Error; use crate::models::InsertableUser;