Move invite code generator to users::utils module

This commit is contained in:
silverpill 2021-10-02 16:32:57 +00:00
parent aa826fd57f
commit b1776b9520
5 changed files with 28 additions and 11 deletions

View file

@ -10,7 +10,7 @@ use mitra::logger::configure_logger;
use mitra::models::posts::queries::delete_post;
use mitra::models::profiles::queries::delete_profile;
use mitra::models::users::queries::{
generate_invite_code,
create_invite_code,
get_invite_codes,
};
@ -77,7 +77,7 @@ async fn main() {
println!("post deleted");
},
SubCommand::GenerateInviteCode(_) => {
let invite_code = generate_invite_code(db_client).await.unwrap();
let invite_code = create_invite_code(db_client).await.unwrap();
println!("generated invite code: {}", invite_code);
},
SubCommand::ListInviteCodes(_) => {

View file

@ -1,2 +1,3 @@
pub mod queries;
pub mod types;
mod utils;

View file

@ -4,13 +4,13 @@ use uuid::Uuid;
use crate::errors::DatabaseError;
use crate::models::profiles::queries::create_profile;
use crate::models::profiles::types::{DbActorProfile, ProfileCreateData};
use crate::utils::crypto::generate_random_string;
use super::types::{DbUser, User, UserRegistrationData};
use super::utils::generate_invite_code;
pub async fn generate_invite_code(
pub async fn create_invite_code(
db_client: &impl GenericClient,
) -> Result<String, DatabaseError> {
let invite_code = generate_random_string();
let invite_code = generate_invite_code();
db_client.execute(
"
INSERT INTO user_invite_code (code)

22
src/models/users/utils.rs Normal file
View file

@ -0,0 +1,22 @@
use hex;
use rand;
use rand::prelude::*;
const INVITE_CODE_LENGTH: usize = 32;
pub fn generate_invite_code() -> String {
let mut rng = rand::thread_rng();
let value: [u8; INVITE_CODE_LENGTH / 2] = rng.gen();
hex::encode(value)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_generate_invite_code() {
let invite_code = generate_invite_code();
assert_eq!(invite_code.len(), INVITE_CODE_LENGTH);
}
}

View file

@ -4,12 +4,6 @@ use rsa::{Hash, PaddingScheme, PublicKey, RsaPrivateKey, RsaPublicKey};
use rsa::pkcs8::{FromPrivateKey, FromPublicKey, ToPrivateKey, ToPublicKey};
use sha2::{Digest, Sha256};
pub fn generate_random_string() -> String {
let mut rng = rand::thread_rng();
let value: [u8; 16] = rng.gen();
hex::encode(value)
}
pub fn hash_password(password: &str) -> Result<String, argon2::Error> {
let mut rng = rand::thread_rng();
let salt: [u8; 32] = rng.gen();