Return logged in user from login endpoint
This commit is contained in:
parent
1f70da1747
commit
251d567863
10
src/auth.rs
10
src/auth.rs
@ -57,7 +57,7 @@ pub async fn signup(new_user: User) -> Result<(), ServerFnError> {
|
|||||||
/// Takes in a username or email and a password in plaintext
|
/// Takes in a username or email and a password in plaintext
|
||||||
/// Returns a Result with a boolean indicating if the login was successful
|
/// Returns a Result with a boolean indicating if the login was successful
|
||||||
#[server(endpoint = "login")]
|
#[server(endpoint = "login")]
|
||||||
pub async fn login(credentials: UserCredentials) -> Result<bool, ServerFnError> {
|
pub async fn login(credentials: UserCredentials) -> Result<Option<User>, ServerFnError> {
|
||||||
use crate::users::validate_user;
|
use crate::users::validate_user;
|
||||||
|
|
||||||
let mut auth_session = extract::<AuthSession<AuthBackend>>().await
|
let mut auth_session = extract::<AuthSession<AuthBackend>>().await
|
||||||
@ -66,12 +66,14 @@ pub async fn login(credentials: UserCredentials) -> Result<bool, ServerFnError>
|
|||||||
let user = validate_user(credentials).await
|
let user = validate_user(credentials).await
|
||||||
.map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error validating user: {}", e)))?;
|
.map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error validating user: {}", e)))?;
|
||||||
|
|
||||||
if let Some(user) = user {
|
if let Some(mut user) = user {
|
||||||
auth_session.login(&user).await
|
auth_session.login(&user).await
|
||||||
.map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error logging in user: {}", e)))?;
|
.map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error logging in user: {}", e)))?;
|
||||||
Ok(true)
|
|
||||||
|
user.password = None;
|
||||||
|
Ok(Some(user))
|
||||||
} else {
|
} else {
|
||||||
Ok(false)
|
Ok(None)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,12 +32,12 @@ pub fn Login() -> impl IntoView {
|
|||||||
if let Err(err) = login_result {
|
if let Err(err) = login_result {
|
||||||
// Handle the error here, e.g., log it or display to the user
|
// Handle the error here, e.g., log it or display to the user
|
||||||
log!("Error logging in: {:?}", err);
|
log!("Error logging in: {:?}", err);
|
||||||
} else if let Ok(true) = login_result {
|
} else if let Ok(Some(_)) = login_result {
|
||||||
// Redirect to the login page
|
// Redirect to the login page
|
||||||
log!("Logged in Successfully!");
|
log!("Logged in Successfully!");
|
||||||
leptos_router::use_navigate()("/", Default::default());
|
leptos_router::use_navigate()("/", Default::default());
|
||||||
log!("Navigated to home page after login");
|
log!("Navigated to home page after login");
|
||||||
} else if let Ok(false) = login_result {
|
} else if let Ok(None) = login_result {
|
||||||
log!("Invalid username or password");
|
log!("Invalid username or password");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user