Connexion
formulaire/login.rs
formulaire
// Formulaire manuel — pas de modele, pas de clean
pub struct LoginForm {
pub form: Forms,
}
impl RuniqueForm for LoginForm {
fn register_fields(form: &mut Forms) {
form.field(
&TextField::text("username")
.label("Nom d'utilisateur")
.required(),
);
form.field(
&TextField::password("password")
.label("Mot de passe")
.required(),
);
}
// Pas de clean — impl_form_access!() suffit
impl_form_access!();
}
formulaire/login.rs
formulaire
// Formulaire manuel — pas de modele, pas de clean
pub struct LoginForm {
pub form: Forms,
}
impl RuniqueForm for LoginForm {
fn register_fields(form: &mut Forms) {
form.field(
&TextField::text("username")
.label("Nom d'utilisateur")
.required(),
);
form.field(
&TextField::password("password")
.label("Mot de passe")
.required(),
);
}
// Pas de clean — impl_form_access!() suffit
impl_form_access!();
}
handler
handler
pub async fn login(
mut request: Request,
Prisme(form): Prisme<LoginForm>,
) -> AppResult<Response> {
if request.is_post() {
let user_opt = UserEntity::find()
.filter(Column::Username.eq(&username))
.one(&db).await?;
match user_opt {
Some(user) if verify(&password, &user.password) => {
auth_login(&session, user.id, &user.username).await;
return Ok(Redirect::to("/profil").into_response());
}
_ => {}
}
}
request.render("auth/login.html")
}
handler
handler
pub async fn login(
mut request: Request,
Prisme(form): Prisme<LoginForm>,
) -> AppResult<Response> {
if request.is_post() {
let user_opt = UserEntity::find()
.filter(Column::Username.eq(&username))
.one(&db).await?;
match user_opt {
Some(user) if verify(&password, &user.password) => {
auth_login(&session, user.id, &user.username).await;
return Ok(Redirect::to("/profil").into_response());
}
_ => {}
}
}
request.render("auth/login.html")
}