chore: identity: use common error type for cmds
This commit is contained in:
parent
4b5f8733ce
commit
09d3e5331c
4 changed files with 18 additions and 15 deletions
|
@ -6,17 +6,26 @@ use argon2_creds::CredsError;
|
||||||
use derive_more::Display;
|
use derive_more::Display;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
pub type RegisterUserCommandResult<V> = Result<V, RegisterUserCommandError>;
|
pub type IdentityResult<V> = Result<V, IdentityError>;
|
||||||
|
|
||||||
#[derive(Debug, Display, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
|
#[derive(Debug, Display, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
|
||||||
pub enum RegisterUserCommandError {
|
pub enum IdentityError {
|
||||||
|
UsernameExists,
|
||||||
|
EmailExists,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub type IdentityCommandResult<V> = Result<V, IdentityCommandError>;
|
||||||
|
|
||||||
|
#[derive(Debug, Display, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
|
||||||
|
pub enum IdentityCommandError {
|
||||||
BadUsername(String),
|
BadUsername(String),
|
||||||
BadEmail,
|
BadEmail,
|
||||||
BadPassowrd(String),
|
BadPassowrd(String),
|
||||||
PasswordsDontMatch,
|
PasswordsDontMatch,
|
||||||
|
WrongPassword,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<CredsError> for RegisterUserCommandError {
|
impl From<CredsError> for IdentityCommandError {
|
||||||
fn from(v: CredsError) -> Self {
|
fn from(v: CredsError) -> Self {
|
||||||
match v {
|
match v {
|
||||||
CredsError::ProfainityError => Self::BadUsername(v.to_string()),
|
CredsError::ProfainityError => Self::BadUsername(v.to_string()),
|
|
@ -2,7 +2,7 @@
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
use super::error::*;
|
use super::*;
|
||||||
use derive_getters::Getters;
|
use derive_getters::Getters;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
@ -20,12 +20,12 @@ impl RegisterUserCommand {
|
||||||
password: String,
|
password: String,
|
||||||
confirm_password: String,
|
confirm_password: String,
|
||||||
config: &argon2_creds::Config,
|
config: &argon2_creds::Config,
|
||||||
) -> RegisterUserCommandResult<Self> {
|
) -> IdentityCommandResult<Self> {
|
||||||
let username = config.username(&username)?;
|
let username = config.username(&username)?;
|
||||||
config.email(&email)?;
|
config.email(&email)?;
|
||||||
|
|
||||||
if password != confirm_password {
|
if password != confirm_password {
|
||||||
return Err(RegisterUserCommandError::PasswordsDontMatch);
|
return Err(IdentityCommandError::PasswordsDontMatch);
|
||||||
}
|
}
|
||||||
let hashed_password: String = config.password(&password)?;
|
let hashed_password: String = config.password(&password)?;
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ mod tests {
|
||||||
&config,
|
&config,
|
||||||
)
|
)
|
||||||
.err(),
|
.err(),
|
||||||
Some(RegisterUserCommandError::BadEmail)
|
Some(IdentityCommandError::BadEmail)
|
||||||
);
|
);
|
||||||
|
|
||||||
assert!(matches!(
|
assert!(matches!(
|
||||||
|
@ -74,7 +74,7 @@ mod tests {
|
||||||
&config,
|
&config,
|
||||||
)
|
)
|
||||||
.err(),
|
.err(),
|
||||||
Some(RegisterUserCommandError::BadUsername(_))
|
Some(IdentityCommandError::BadUsername(_))
|
||||||
));
|
));
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
@ -86,7 +86,7 @@ mod tests {
|
||||||
&config,
|
&config,
|
||||||
)
|
)
|
||||||
.err(),
|
.err(),
|
||||||
Some(RegisterUserCommandError::PasswordsDontMatch)
|
Some(IdentityCommandError::PasswordsDontMatch)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
pub mod command;
|
pub mod command;
|
||||||
pub mod error;
|
|
||||||
pub mod events;
|
pub mod events;
|
||||||
pub mod service;
|
pub mod service;
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,6 @@
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
// - Hash password
|
|
||||||
// - Add user record
|
|
||||||
// - Send verification email
|
|
||||||
// - TODO: If UID == 0; set admin
|
// - TODO: If UID == 0; set admin
|
||||||
use derive_builder::Builder;
|
use derive_builder::Builder;
|
||||||
|
|
||||||
|
@ -70,8 +67,6 @@ impl RegisterUserUseCase for RegisterUserService {
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
// TODO: send mail verification link
|
|
||||||
|
|
||||||
Ok(events::UserRegisteredEventBuilder::default()
|
Ok(events::UserRegisteredEventBuilder::default()
|
||||||
.username(cmd.username().into())
|
.username(cmd.username().into())
|
||||||
.email(cmd.email().into())
|
.email(cmd.email().into())
|
||||||
|
|
Loading…
Reference in a new issue