Browse Source

change hash_cost to u32

main
Rohan Sircar 3 years ago
parent
commit
1d74b75ca8
  1. 3
      src/actions/users.rs
  2. 11
      src/lib.rs
  3. 12
      src/routes/users.rs
  4. 2
      src/services/user_service.rs

3
src/actions/users.rs

@ -43,6 +43,7 @@ pub fn get_all(
pub fn insert_new_user( pub fn insert_new_user(
nu: models::NewUser, nu: models::NewUser,
conn: &impl diesel::Connection<Backend = diesel::sqlite::Sqlite>, conn: &impl diesel::Connection<Backend = diesel::sqlite::Sqlite>,
hash_cost: Option<u32>,
) -> Result<models::UserDto, errors::DomainError> { ) -> Result<models::UserDto, errors::DomainError> {
// It is common when using Diesel with Actix web to import schema-related // It is common when using Diesel with Actix web to import schema-related
// modules inside a function's scope (rather than the normal module's scope) // modules inside a function's scope (rather than the normal module's scope)
@ -50,7 +51,7 @@ pub fn insert_new_user(
use crate::schema::users::dsl::*; use crate::schema::users::dsl::*;
let nu = { let nu = {
let mut nu2 = nu; let mut nu2 = nu;
nu2.password = hash(&nu2.password, DEFAULT_COST)?;
nu2.password = hash(&nu2.password, hash_cost.unwrap_or(DEFAULT_COST))?;
nu2 nu2
}; };

11
src/lib.rs

@ -39,13 +39,13 @@ pub struct EnvConfig {
pub database_url: String, pub database_url: String,
pub http_host: String, pub http_host: String,
#[serde(default = "default_hash_cost")] #[serde(default = "default_hash_cost")]
pub hash_cost: u8,
pub hash_cost: u32,
pub logger_format: LoggerFormat, pub logger_format: LoggerFormat,
} }
#[derive(Deserialize, Debug, Clone)] #[derive(Deserialize, Debug, Clone)]
pub struct AppConfig { pub struct AppConfig {
pub hash_cost: u8,
pub hash_cost: u32,
} }
#[derive(Clone)] #[derive(Clone)]
@ -54,7 +54,7 @@ pub struct AppData {
pub pool: DbPool, pub pool: DbPool,
} }
pub fn default_hash_cost() -> u8 {
pub fn default_hash_cost() -> u32 {
8 8
} }
@ -72,7 +72,8 @@ pub fn configure_app(app_data: AppData) -> Box<dyn Fn(&mut ServiceConfig)> {
.route( .route(
"/{user_id}", "/{user_id}",
web::get().to(routes::users::get_user), web::get().to(routes::users::get_user),
),
)
.route("", web::post().to(routes::users::add_user)),
) )
.route( .route(
"/build-info", "/build-info",
@ -84,7 +85,7 @@ pub fn configure_app(app_data: AppData) -> Box<dyn Fn(&mut ServiceConfig)> {
.service(routes::auth::login) .service(routes::auth::login)
.service(routes::auth::logout) .service(routes::auth::logout)
.service(routes::auth::index) .service(routes::auth::index)
.service(routes::users::add_user)
// .service(routes::users::add_user)
.service(fs::Files::new("/", "./static")); .service(fs::Files::new("/", "./static"));
}) })
} }

12
src/routes/users.rs

@ -58,6 +58,8 @@ pub async fn get_user2(
} }
} }
///List all users
#[tracing::instrument(level = "debug", skip(app_data))]
pub async fn get_all_users( pub async fn get_all_users(
app_data: web::Data<AppData>, app_data: web::Data<AppData>,
) -> Result<HttpResponse, DomainError> { ) -> Result<HttpResponse, DomainError> {
@ -70,7 +72,7 @@ pub async fn get_all_users(
.await .await
.map_err(|err| DomainError::new_thread_pool_error(err.to_string()))?; .map_err(|err| DomainError::new_thread_pool_error(err.to_string()))?;
tracing::debug!("{:?}", users);
tracing::trace!("{:?}", users);
if !users.is_empty() { if !users.is_empty() {
Ok(HttpResponse::Ok().json(users)) Ok(HttpResponse::Ok().json(users))
@ -82,7 +84,7 @@ pub async fn get_all_users(
} }
//TODO: Add refinement here //TODO: Add refinement here
/// Inserts new user with name defined in form. /// Inserts new user with name defined in form.
#[post("/do_registration")]
#[tracing::instrument(level = "debug", skip(app_data))]
pub async fn add_user( pub async fn add_user(
app_data: web::Data<AppData>, app_data: web::Data<AppData>,
form: web::Json<models::NewUser>, form: web::Json<models::NewUser>,
@ -92,7 +94,11 @@ pub async fn add_user(
Ok(_) => web::block(move || { Ok(_) => web::block(move || {
let pool = &app_data.pool; let pool = &app_data.pool;
let conn = pool.get()?; let conn = pool.get()?;
actions::insert_new_user(form.0, &conn)
actions::insert_new_user(
form.0,
&conn,
Some(app_data.config.hash_cost),
)
}) })
.await .await
.map(|user| { .map(|user| {

2
src/services/user_service.rs

@ -58,7 +58,7 @@ impl UserService for UserServiceImpl {
nu: models::NewUser, nu: models::NewUser,
) -> Result<models::UserDto, errors::DomainError> { ) -> Result<models::UserDto, errors::DomainError> {
let conn = self.pool.get()?; let conn = self.pool.get()?;
actions::insert_new_user(nu, &conn)
actions::insert_new_user(nu, &conn, Some(8))
} }
fn verify_password( fn verify_password(

Loading…
Cancel
Save