change hash_cost to u32
This commit is contained in:
parent
5c8720d40c
commit
1d74b75ca8
@ -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
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"));
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -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| {
|
||||||
|
@ -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…
Reference in New Issue
Block a user