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(
nu: models::NewUser,
conn: &impl diesel::Connection<Backend = diesel::sqlite::Sqlite>,
hash_cost: Option<u32>,
) -> Result<models::UserDto, errors::DomainError> {
// 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)
@ -50,7 +51,7 @@ pub fn insert_new_user(
use crate::schema::users::dsl::*;
let nu = {
let mut nu2 = nu;
nu2.password = hash(&nu2.password, DEFAULT_COST)?;
nu2.password = hash(&nu2.password, hash_cost.unwrap_or(DEFAULT_COST))?;
nu2
};

11
src/lib.rs

@ -39,13 +39,13 @@ pub struct EnvConfig {
pub database_url: String,
pub http_host: String,
#[serde(default = "default_hash_cost")]
pub hash_cost: u8,
pub hash_cost: u32,
pub logger_format: LoggerFormat,
}
#[derive(Deserialize, Debug, Clone)]
pub struct AppConfig {
pub hash_cost: u8,
pub hash_cost: u32,
}
#[derive(Clone)]
@ -54,7 +54,7 @@ pub struct AppData {
pub pool: DbPool,
}
pub fn default_hash_cost() -> u8 {
pub fn default_hash_cost() -> u32 {
8
}
@ -72,7 +72,8 @@ pub fn configure_app(app_data: AppData) -> Box<dyn Fn(&mut ServiceConfig)> {
.route(
"/{user_id}",
web::get().to(routes::users::get_user),
),
)
.route("", web::post().to(routes::users::add_user)),
)
.route(
"/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::logout)
.service(routes::auth::index)
.service(routes::users::add_user)
// .service(routes::users::add_user)
.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(
app_data: web::Data<AppData>,
) -> Result<HttpResponse, DomainError> {
@ -70,7 +72,7 @@ pub async fn get_all_users(
.await
.map_err(|err| DomainError::new_thread_pool_error(err.to_string()))?;
tracing::debug!("{:?}", users);
tracing::trace!("{:?}", users);
if !users.is_empty() {
Ok(HttpResponse::Ok().json(users))
@ -82,7 +84,7 @@ pub async fn get_all_users(
}
//TODO: Add refinement here
/// Inserts new user with name defined in form.
#[post("/do_registration")]
#[tracing::instrument(level = "debug", skip(app_data))]
pub async fn add_user(
app_data: web::Data<AppData>,
form: web::Json<models::NewUser>,
@ -92,7 +94,11 @@ pub async fn add_user(
Ok(_) => web::block(move || {
let pool = &app_data.pool;
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
.map(|user| {

2
src/services/user_service.rs

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

Loading…
Cancel
Save