Login
No account yet?
Sign up
● ● ●
// Manual form — no model, no clean
pub struct LoginForm {
pub form: Forms,
}
impl RuniqueForm for LoginForm {
fn register_fields(form: &mut Forms) {
form.field(
&TextField::text("username")
.label("Username")
.required(),
);
form.field(
&TextField::password("password")
.label("Password")
.required(),
);
}
impl_form_access!();
}
pub async fn login(mut request: Request) -> AppResult<Response> {
let mut form: LoginForm = request.form();
if request.is_post() && form.is_valid().await {
let username = form.cleaned_string("username").unwrap_or_default();
let password = form.cleaned_string("password").unwrap_or_default();
let db = &request.engine.db;
let user = search!(UserEntity => Username eq username.as_str())
.first(db).await.unwrap_or(None);
if let Some(u) = user
&& u.is_active && verify(&password, &u.password)
{
auth_login(&request.session, db, u.id).await.ok();
return Ok(Redirect::to("/profile").into_response());
}
}
request.render("auth/login.html")
}