25 lines
730 B
Rust
25 lines
730 B
Rust
use crate::auth::password::hash_password;
|
|
use crate::models::user;
|
|
use crate::routes::core::dto::JoinRequest;
|
|
use anyhow::Result as AnyResult;
|
|
use sea_orm::Set;
|
|
use uuid::Uuid;
|
|
|
|
pub fn join_request_to_user_am(
|
|
payload: JoinRequest,
|
|
superuser_token: Option<Uuid>,
|
|
) -> AnyResult<user::ActiveModel> {
|
|
let is_super_admin = match (payload.superuser_token.as_ref(), superuser_token) {
|
|
(Some(provided), Some(init)) => provided == &init.to_string(),
|
|
_ => false,
|
|
};
|
|
|
|
Ok(user::ActiveModel {
|
|
id: Default::default(),
|
|
username: Set(payload.username),
|
|
password: Set(hash_password(&payload.password)?),
|
|
is_superuser: Set(is_super_admin),
|
|
..Default::default()
|
|
})
|
|
}
|