Leptos updated to 0.6.5
This commit is contained in:
@@ -7,6 +7,7 @@ use crate::components::data_form::ForValidation;
|
||||
cfg_if! { if #[cfg(feature = "ssr")] {
|
||||
use sqlx::{query_as, PgPool, query};
|
||||
use crate::error::AppError;
|
||||
use crate::backend::get_pool;
|
||||
use log::info;
|
||||
|
||||
pub async fn check_company(pool: &PgPool) -> Result<(), AppError> {
|
||||
@@ -26,14 +27,11 @@ cfg_if! { if #[cfg(feature = "ssr")] {
|
||||
|
||||
#[server(GetCompany, "/api", "Url", "get_company")]
|
||||
pub async fn get_company() -> Result<ApiResponse<Company>, ServerFnError> {
|
||||
use crate::backend::AppData;
|
||||
use actix_web::web::Data;
|
||||
use leptos_actix::extract;
|
||||
use crate::perm_check;
|
||||
|
||||
perm_check!(is_logged_in);
|
||||
|
||||
let pool = extract(|data: Data<AppData>| async move { data.db_pool().clone() }).await?;
|
||||
let pool = get_pool().await?;
|
||||
|
||||
let cmp = sqlx::query_as::<_, Company>("SELECT * FROM company")
|
||||
.fetch_one(&pool)
|
||||
@@ -44,14 +42,11 @@ pub async fn get_company() -> Result<ApiResponse<Company>, ServerFnError> {
|
||||
|
||||
#[server(UpdateCompany, "/api", "Url", "update_company")]
|
||||
pub async fn update_company(company: Company) -> Result<ApiResponse<()>, ServerFnError> {
|
||||
use crate::backend::AppData;
|
||||
use actix_web::web::Data;
|
||||
use leptos_actix::extract;
|
||||
use crate::perm_check;
|
||||
|
||||
perm_check!(is_admin);
|
||||
|
||||
let pool = extract(|data: Data<AppData>| async move { data.db_pool().clone() }).await?;
|
||||
let pool = get_pool().await?;
|
||||
|
||||
sqlx::query(
|
||||
"UPDATE company SET name = $1, street = $2, house_number = $3, zip_code = $4, city = $5 \
|
||||
|
||||
+2
-1
@@ -72,7 +72,8 @@ cfg_if!{
|
||||
}
|
||||
|
||||
pub async fn get_pool() -> Result<PgPool, ServerFnError> {
|
||||
extract(|data: Data<AppData>| async move { data.db_pool().clone() }).await
|
||||
let data = extract::<Data<AppData>>().await?;
|
||||
Ok(data.db_pool().clone())
|
||||
}
|
||||
}
|
||||
}
|
||||
+14
-13
@@ -42,9 +42,14 @@ cfg_if! { if #[cfg(feature = "ssr")] {
|
||||
}
|
||||
|
||||
pub async fn logged_in_user() -> Option<User> {
|
||||
extract(|session: Session| async move {
|
||||
session.get::<User>("user").unwrap_or(None)
|
||||
}).await.unwrap_or(None)
|
||||
let session = extract::<Session>().await;
|
||||
|
||||
if session.is_err() {
|
||||
return None
|
||||
}
|
||||
|
||||
session.unwrap().get::<User>("user").unwrap_or(None)
|
||||
|
||||
/*let mut usr = User::default();
|
||||
usr.full_name = Some("PokAdm".to_string());
|
||||
usr.admin = true;
|
||||
@@ -77,10 +82,8 @@ pub async fn login(username: String, password: String) -> Result<ApiResponse<()>
|
||||
let user = user_from_login(&pool, &username).await.unwrap_or(User::default());
|
||||
|
||||
if !user.login.is_empty() && pwhash::bcrypt::verify(password, &user.password) {
|
||||
extract(|session: Session| async move {
|
||||
let _ = session.insert("user", user);
|
||||
})
|
||||
.await?;
|
||||
let session = extract::<Session>().await?;
|
||||
let _ = session.insert("user", user);
|
||||
|
||||
info!("User {} logged in", username);
|
||||
|
||||
@@ -97,9 +100,8 @@ pub async fn login(username: String, password: String) -> Result<ApiResponse<()>
|
||||
|
||||
#[server]
|
||||
pub async fn logout() -> Result<(), ServerFnError> {
|
||||
extract(|session: Session| async move {
|
||||
session.clear();
|
||||
}).await?;
|
||||
let session = extract::<Session>().await?;
|
||||
session.clear();
|
||||
|
||||
redirect("/login");
|
||||
Ok(())
|
||||
@@ -160,9 +162,8 @@ pub async fn update_profile(user: UserProfile) -> Result<ApiResponse<()>, Server
|
||||
|
||||
if logged_in_user().await.unwrap_or_default().login == user.login() {
|
||||
let usr = user_from_login(&pool, user.login()).await?;
|
||||
extract(|session: Session| async move {
|
||||
let _ = session.insert("user", usr);
|
||||
}).await?;
|
||||
let session = extract::<Session>().await?;
|
||||
let _ = session.insert("user", usr);
|
||||
}
|
||||
|
||||
Ok(ApiResponse::Data(()))
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
use crate::backend::data::ApiResponse;
|
||||
use crate::components::modal_box::{DialogOpener, ModalBody, ModalDialog, ModalFooter};
|
||||
use leptos::*;
|
||||
use leptos::server_fn::client::browser::BrowserClient;
|
||||
use leptos::server_fn::codec::{Json, PostUrl};
|
||||
use leptos::server_fn::error::NoCustomError;
|
||||
use leptos::server_fn::ServerFn;
|
||||
use leptos_router::*;
|
||||
use serde::de::DeserializeOwned;
|
||||
use validator::Validate;
|
||||
use crate::components::server_err::ServerErr;
|
||||
use crate::components::validation_err::ValidationErr;
|
||||
@@ -13,7 +18,13 @@ pub trait ForValidation {
|
||||
}
|
||||
|
||||
#[component]
|
||||
pub fn data_form<T: 'static + server_fn::ServerFn<()> + Clone + ForValidation>(
|
||||
pub fn data_form<T: 'static + Clone +
|
||||
ServerFn<Client = BrowserClient,
|
||||
InputEncoding = PostUrl,
|
||||
OutputEncoding = Json,
|
||||
Error = NoCustomError,
|
||||
Output = ApiResponse<()>> +
|
||||
DeserializeOwned + ForValidation>(
|
||||
opener: DialogOpener,
|
||||
action: Action<T, Result<ApiResponse<()>, ServerFnError>>,
|
||||
title: &'static str,
|
||||
@@ -54,7 +65,14 @@ pub fn data_form<T: 'static + server_fn::ServerFn<()> + Clone + ForValidation>(
|
||||
}
|
||||
|
||||
#[component]
|
||||
pub fn question_dialog<T: 'static + server_fn::ServerFn<()> + Clone>(
|
||||
pub fn question_dialog<T: 'static
|
||||
+ ServerFn<Client = BrowserClient,
|
||||
InputEncoding = PostUrl,
|
||||
OutputEncoding = Json,
|
||||
Error = NoCustomError,
|
||||
Output = ApiResponse<()>>
|
||||
+ DeserializeOwned
|
||||
+ Clone>(
|
||||
opener: DialogOpener,
|
||||
action: Action<T, Result<ApiResponse<()>, ServerFnError>>,
|
||||
title: &'static str,
|
||||
|
||||
Reference in New Issue
Block a user