diff --git a/server/src/members.rs b/server/src/members.rs index 944e0b5..60671a1 100644 --- a/server/src/members.rs +++ b/server/src/members.rs @@ -7,6 +7,7 @@ use serde_json::Value; use serde::Serialize; use crate::db_types::{UBigInt, BigInt, Integer, VarChar}; +use crate::auth; #[derive(Serialize)] pub struct Member { @@ -18,29 +19,16 @@ pub struct Member { pub permissions: UBigInt, } -struct InsertableMember<'n> { - name: &'n str, - permissions: u64, -} -impl<'n> InsertableMember<'n> { - fn new(name: &'n str) -> InsertableMember<'n> { - use crate::perms::{JOIN_VOICE, SEND_MESSAGES}; - - let now: BigInt = Utc::now().timestamp_millis(); - let default_perms = JOIN_VOICE | SEND_MESSAGES; - InsertableMember { - name: name, - permissions: default_perms, - } - } -} - pub async fn insert_new_member(p: &Pool, name: VarChar, perms: u64) -> Result { use crate::auth::generate_secret; let conn: Conn = p.get_conn().await?; - let secret: String = generate_secret(); + let secret_raw: String = generate_secret(); + let secret = match bcrypt::hash(&secret_raw, auth::BCRYPT_COST) { + Ok(value) => value, + Err(e) => panic!("\tCould not insert member due to bcrypt failure:\n\t\t{}",e) + }; let now: BigInt = Utc::now().timestamp(); let conn = conn.drop_exec( @@ -63,7 +51,7 @@ pub async fn insert_new_member(p: &Pool, name: VarChar, perms: u64) -> Result, params: Value) { .unwrap_or(&default_name) .as_str().unwrap_or("NewUser"); - let pre_mem = InsertableMember::new(name); match insert_new_member(p, name.to_string(), perms::GENERAL_NEW).await { Ok(new_member) => { *resp.status_mut() = StatusCode::OK; @@ -96,3 +83,4 @@ async fn general_new_user(p: &Pool, resp: &mut Response, params: Value) { } } } +