42 lines
1021 B
Rust
42 lines
1021 B
Rust
// src/auth/models.rs
|
|
|
|
use serde::Deserialize;
|
|
use validator::Validate;
|
|
|
|
#[derive(Debug, Validate, Deserialize)]
|
|
pub struct RegisterRequest {
|
|
#[validate(length(min = 1, max = 30))]
|
|
pub username: String,
|
|
#[validate(email)]
|
|
pub email: String,
|
|
#[validate(length(min = 1))]
|
|
pub password: String,
|
|
pub password_confirmation: String,
|
|
}
|
|
|
|
#[derive(Debug, Validate, Deserialize)]
|
|
pub struct LoginRequest {
|
|
#[validate(length(min = 1))]
|
|
pub identifier: String,
|
|
#[validate(length(min = 1))]
|
|
pub password: String,
|
|
}
|
|
|
|
#[derive(Debug, thiserror::Error)]
|
|
pub enum AuthError {
|
|
#[error("Passwords do not match")]
|
|
PasswordMismatch,
|
|
#[error("User already exists")]
|
|
UserExists,
|
|
#[error("Database error: {0}")]
|
|
DatabaseError(String),
|
|
#[error("Hashing error: {0}")]
|
|
HashingError(String),
|
|
#[error("Invalid credentials")]
|
|
InvalidCredentials,
|
|
#[error("JWT error: {0}")]
|
|
JwtError(String),
|
|
#[error("Configuration error: {0}")]
|
|
ConfigError(String),
|
|
}
|