admin/users: add new user

This commit is contained in:
Philippe Loctaux 2023-05-06 00:26:38 +02:00
parent 85facf7dc6
commit 306f2a60c4
8 changed files with 167 additions and 5 deletions

View file

@ -43,15 +43,43 @@ impl User {
is_admin: bool,
username: &Username,
password: Option<&Password>,
) -> Result<Option<()>, Error> {
Ok(DatabaseUsers::insert(
) -> Result<(), Error> {
DatabaseUsers::insert(
conn,
&id.0,
is_admin,
username.as_ref(),
password.map(|p| p.hash()),
)
.await?)
.await
.map_err(|e| match e {
DatabaseError::UniqueConstraintPrimaryKey => Error::IdNotAvailable(id.to_string()),
DatabaseError::UniqueConstraint(column) => {
if &column == "username" {
Error::UsernameNotAvailable(username.into())
} else {
Error::ColumnNotAvailable(column)
}
}
_ => e.into(),
})?;
Ok(())
// DatabaseUsers::set_username(conn, self.id.as_ref(), username.as_ref())
// .await
// .map_err(|e| match e {
// DatabaseError::UniqueConstraint(column) => {
// if &column == "username" {
// Error::UsernameNotAvailable(username.into())
// } else {
// Error::ColumnNotAvailable(column)
// }
// }
// _ => e.into(),
// })?;
//
// Ok(())
}
pub async fn get_by_id(

View file

@ -9,6 +9,9 @@ pub enum Error {
#[error("The database column \"{0}\" is not available.")]
ColumnNotAvailable(String),
#[error("The generated id \"{0}\" is not available. Please retry.")]
IdNotAvailable(String),
#[error("The username \"{0}\" is not available.")]
UsernameNotAvailable(String),