fix(dimentorin): register mentor flow - zod regex attr, uuid id override in user & mentor repos
- Remove broken zod_rs regex() attribute (always fails, blocks password validation) - user repo create: honor entity.id instead of silently generating new v4 (broke FK mentor.user_id) - mentor repo create: set id explicitly (was NULL not-null violation)
This commit is contained in:
@@ -13,7 +13,7 @@ use zod_rs::prelude::*;
|
|||||||
pub struct MentorUserRegisterRequestDto {
|
pub struct MentorUserRegisterRequestDto {
|
||||||
#[zod(email, min_length(1))]
|
#[zod(email, min_length(1))]
|
||||||
pub email: String,
|
pub email: String,
|
||||||
#[zod(min_length(8), regex(pattern = "^[A-Za-z\\d@$!%*?&]{8,}$"))]
|
#[zod(min_length(8))]
|
||||||
pub password: String,
|
pub password: String,
|
||||||
#[zod(min_length(2))]
|
#[zod(min_length(2))]
|
||||||
pub fullname: String,
|
pub fullname: String,
|
||||||
|
|||||||
+1
@@ -105,6 +105,7 @@ impl MentorRepository for PostgresMentorRepository {
|
|||||||
|
|
||||||
async fn create(&self, entity: MentorEntity) -> Result<Uuid, AppError> {
|
async fn create(&self, entity: MentorEntity) -> Result<Uuid, AppError> {
|
||||||
let active_model = MentorActiveModel {
|
let active_model = MentorActiveModel {
|
||||||
|
id: ActiveValue::Set(Uuid::new_v4()),
|
||||||
user_id: ActiveValue::Set(entity.user_id),
|
user_id: ActiveValue::Set(entity.user_id),
|
||||||
industries: ActiveValue::Set(Some(
|
industries: ActiveValue::Set(Some(
|
||||||
serde_json::to_value(&entity.industries)
|
serde_json::to_value(&entity.industries)
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ pub struct AuthLoginResponsetDto {
|
|||||||
pub struct AuthRegisterRequestDto {
|
pub struct AuthRegisterRequestDto {
|
||||||
#[zod(email, min_length(1))]
|
#[zod(email, min_length(1))]
|
||||||
pub email: String,
|
pub email: String,
|
||||||
#[zod(min_length(8), regex(pattern = "^[A-Za-z\\d@$!%*?&]{8,}$"))]
|
#[zod(min_length(8))]
|
||||||
pub password: String,
|
pub password: String,
|
||||||
#[zod(min_length(2))]
|
#[zod(min_length(2))]
|
||||||
pub fullname: String,
|
pub fullname: String,
|
||||||
@@ -89,7 +89,7 @@ impl ZodValidate for AuthRefreshTokenRequestDto {
|
|||||||
pub struct AuthNewPasswordRequestDto {
|
pub struct AuthNewPasswordRequestDto {
|
||||||
#[zod(min_length(1))]
|
#[zod(min_length(1))]
|
||||||
pub token: String,
|
pub token: String,
|
||||||
#[zod(min_length(8), regex(pattern = "^[A-Za-z\\d@$!%*?&]{8,}$"))]
|
#[zod(min_length(8))]
|
||||||
pub password: String,
|
pub password: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ pub struct UsersSetNewPasswordRequestDto {
|
|||||||
pub struct UsersCreateRequestDto {
|
pub struct UsersCreateRequestDto {
|
||||||
#[zod(email, min_length(1))]
|
#[zod(email, min_length(1))]
|
||||||
pub email: String,
|
pub email: String,
|
||||||
#[zod(min_length(8), regex(pattern = "^[A-Za-z\\d@$!%*?&]{8,}$"))]
|
#[zod(min_length(8))]
|
||||||
pub password: String,
|
pub password: String,
|
||||||
#[zod(min_length(2))]
|
#[zod(min_length(2))]
|
||||||
pub fullname: String,
|
pub fullname: String,
|
||||||
|
|||||||
@@ -107,7 +107,9 @@ impl UserRepository for PostgresUserRepository {
|
|||||||
.ok()
|
.ok()
|
||||||
.or_else(|| entity.role.id.is_empty().then_some(Uuid::nil()));
|
.or_else(|| entity.role.id.is_empty().then_some(Uuid::nil()));
|
||||||
let active_model = UserActiveModel {
|
let active_model = UserActiveModel {
|
||||||
id: ActiveValue::Set(Uuid::new_v4()),
|
id: ActiveValue::Set(
|
||||||
|
Uuid::parse_str(&entity.id).unwrap_or_else(|_| Uuid::new_v4()),
|
||||||
|
),
|
||||||
email: ActiveValue::Set(entity.email.clone()),
|
email: ActiveValue::Set(entity.email.clone()),
|
||||||
password_hash: ActiveValue::Set(entity.password),
|
password_hash: ActiveValue::Set(entity.password),
|
||||||
username: ActiveValue::Set(entity.email.clone()),
|
username: ActiveValue::Set(entity.email.clone()),
|
||||||
|
|||||||
Reference in New Issue
Block a user