42 lines
1.4 KiB
Rust
42 lines
1.4 KiB
Rust
use crate::auth::password::hash_password;
|
|
use crate::models::user;
|
|
use crate::routes::user::dto::{CreateUserRequest, UpdateUserRequest, UserResponse};
|
|
use anyhow::Result as AnyResult;
|
|
use sea_orm::{NotSet, Set};
|
|
use uuid::Uuid;
|
|
|
|
pub fn user_model_to_user_response(model: user::Model) -> UserResponse {
|
|
UserResponse {
|
|
id: model.id,
|
|
username: model.username,
|
|
pub_key: model.pub_key,
|
|
is_superuser: model.is_superuser,
|
|
created_at: model.created_at,
|
|
updated_at: model.updated_at,
|
|
}
|
|
}
|
|
|
|
pub fn create_request_to_am(payload: CreateUserRequest) -> AnyResult<user::ActiveModel> {
|
|
Ok(user::ActiveModel {
|
|
id: Set(Uuid::new_v4()),
|
|
username: Set(payload.username),
|
|
password: Set(hash_password(&payload.password)?),
|
|
pub_key: Set(payload.pub_key),
|
|
is_superuser: Set(payload.is_superuser),
|
|
created_at: Set(chrono::Utc::now()),
|
|
updated_at: Set(chrono::Utc::now()),
|
|
})
|
|
}
|
|
|
|
pub fn update_request_to_am(id: Uuid, payload: UpdateUserRequest) -> user::ActiveModel {
|
|
user::ActiveModel {
|
|
id: Set(id),
|
|
username: Set(payload.username),
|
|
password: NotSet, // On ne change pas le password via PUT général
|
|
pub_key: Set(payload.pub_key),
|
|
is_superuser: Set(payload.is_superuser),
|
|
updated_at: Set(chrono::Utc::now()),
|
|
..Default::default()
|
|
}
|
|
}
|