fix(auth): also accept 'name' field for signup compatibility

Frontend sends 'name' field directly. RegisterPayload now accepts:
- name (direct, used by frontend)
- full_name (legacy)
- first_name + last_name (new format)
This commit is contained in:
Tracewebstudio Dev 2026-04-13 20:13:53 +02:00
parent 63eb27a160
commit 1d50d21f00

View file

@ -41,6 +41,8 @@ pub struct RegisterPayload {
pub last_name: Option<String>,
#[serde(default)]
pub full_name: Option<String>,
#[serde(default)]
pub name: Option<String>,
pub email: String,
pub phone: Option<String>,
pub password: String,
@ -202,10 +204,11 @@ async fn register(
let password_hash = hash_password(&payload.password)
.map_err(|e| err(StatusCode::INTERNAL_SERVER_ERROR, &e.to_string(), "INTERNAL_ERROR"))?;
let full_name = match (&payload.first_name, &payload.last_name, &payload.full_name) {
(Some(fn_), Some(ln_), _) => format!("{} {}", fn_.trim(), ln_.trim()).trim().to_string(),
(_, _, Some(fn_)) => fn_.trim().to_string(),
_ => return Err(err(StatusCode::UNPROCESSABLE_ENTITY, "first_name and last_name are required", "VALIDATION_ERROR")),
let full_name = match (&payload.first_name, &payload.last_name, &payload.full_name, &payload.name) {
(Some(fn_), Some(ln_), _, _) => format!("{} {}", fn_.trim(), ln_.trim()).trim().to_string(),
(_, _, Some(fn_), _) => fn_.trim().to_string(),
(_, _, _, Some(n)) => n.trim().to_string(),
_ => return Err(err(StatusCode::UNPROCESSABLE_ENTITY, "Name is required (full_name or first_name+last_name)", "VALIDATION_ERROR")),
};
let user = UserRepository::create(&state.pool, CreateUserPayload {