Upgrade to leptos 0.6

This commit is contained in:
2024-03-30 23:14:06 -04:00
parent 901aa2ce01
commit 013fb6391d
4 changed files with 87 additions and 460 deletions

View File

@ -1,4 +1,5 @@
use leptos::*;
use leptos::server_fn::error::NoCustomError;
use crate::models::User;
/// Create a new user and log them in
@ -19,13 +20,17 @@ pub async fn signup(new_user: User) -> Result<(), ServerFnError> {
};
create_user(&new_user).await
.map_err(|e| ServerFnError::ServerError(format!("Error creating user: {}", e)))?;
.map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error creating user: {}", e)))?;
extract(|request: HttpRequest| async move {
Identity::login(&request.extensions(), new_user.username.clone())
}).await??;
Ok(())
match extract::<HttpRequest>().await {
Ok(request) => {
match Identity::login(&request.extensions(), new_user.username.clone()) {
Ok(_) => Ok(()),
Err(e) => Err(ServerFnError::<NoCustomError>::ServerError(format!("Error logging in user: {}", e))),
}
},
Err(e) => Err(ServerFnError::<NoCustomError>::ServerError(format!("Error getting request: {}", e))),
}
}
/// Log a user in
@ -39,18 +44,22 @@ pub async fn login(username_or_email: String, password: String) -> Result<bool,
use leptos_actix::extract;
let possible_user = validate_user(username_or_email, password).await
.map_err(|e| ServerFnError::ServerError(format!("Error validating user: {}", e)))?;
.map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error validating user: {}", e)))?;
let user = match possible_user {
Some(user) => user,
None => return Ok(false)
};
extract(|request: HttpRequest| async move {
Identity::login(&request.extensions(), user.username.clone())
}).await??;
Ok(true)
match extract::<HttpRequest>().await {
Ok(request) => {
match Identity::login(&request.extensions(), user.username.clone()) {
Ok(_) => Ok(true),
Err(e) => Err(ServerFnError::<NoCustomError>::ServerError(format!("Error logging in user: {}", e))),
}
}
Err(e) => Err(ServerFnError::<NoCustomError>::ServerError(format!("Error getting request: {}", e))),
}
}
/// Log a user out
@ -60,11 +69,11 @@ pub async fn logout() -> Result<(), ServerFnError> {
use leptos_actix::extract;
use actix_identity::Identity;
extract(|user: Option<Identity>| async move {
if let Some(user) = user {
user.logout();
}
}).await?;
match extract::<Option<Identity>>().await {
Ok(Some(user)) => user.logout(),
Ok(None) => {},
Err(e) => return Err(ServerFnError::<NoCustomError>::ServerError(format!("Error getting user: {}", e))),
};
Ok(())
}