use std::sync::Arc; use axum::{ //extract::{self,Request,Query}, http::{ // StatusCode, Uri, header::HeaderMap,// HeaderValue}, }, // Json, routing::get, Extension, extract::ConnectInfo, response::{IntoResponse,Response}, // http::Request, handler::HandlerWithoutStateExt, http::StatusCode, routing::get, Router, Router, }; use tower_cookies::Cookies; use crate::{ route, defs::{ AppDBs, Random, ReqHandler, ReqHeaderMap, AppConnectInfo, }, handlers::get_auth_state, }; pub fn pages_router_handlers() -> Router { async fn page_handler( //req: Request, header: HeaderMap, uri: Uri, Extension(app_dbs): Extension>, Extension(cookies): Extension, Extension(random): Extension, ConnectInfo(app_connect_info): ConnectInfo, axum::extract::Path(name): axum::extract::Path, //auth_state: AuthState, ) -> Response { // if let Some(cookie_value) = get_cookie(&req) { // println!("cookie_value: {}",&cookie_value.to_string()); // // TODO check value // } //let has_cookie: bool; // dbg!(&auth_state.session); // if auth_state.user.is_none() { // eprintln!("No user found in session"); // } let auth_state = get_auth_state(true, &cookies, &app_dbs).await; // has_cookie=true; // TODO check value // let sid: String = format!("{}",&auth_state.sid()); // println!("auth_sid: {}",&sid); // println!("id: {}",&auth_state.id()); // println!("is_expired: {}",&auth_state.ses_expired()); // println!("is_destroyed: {}",&auth_state.ses_destroyed()); // println!("validate: {}",&auth_state.ses_validate()); // let _u = &auth_state.user; let mut req_handler = ReqHandler::new( ReqHeaderMap::new(header, &format!("{}",&uri.path().to_string()), &app_connect_info), &app_dbs, &uri, &auth_state, &random, "page_handler" ); // if let Some(a) = auth_state { // println!("Auth State from root"); // } // let uri_path = format!("{}",&uri.path().to_string()); // dbg!("uri: {}",&uri_path); req_handler.prepare_response(); req_handler.context.insert("with_menu", "1"); let tpl_name = if name.contains(".html") { name.replace(".html","") } else { name }; let result = req_handler.render_template(&format!("pages/{}.html.j2",&tpl_name), &tpl_name); // if !has_cookie { // let mut u128_pool = [0u8; 16]; // match random.lock() { // Ok(mut r) => r.fill_bytes(&mut u128_pool), // Err(e) => println!("Error random: {}",e), // } // let session_token = u128::from_le_bytes(u128_pool).to_string(); // let user_data = format!("{}|{}","jesus" ,"admin,dev"); // let result_store = SessionStoreDB::store_session_data(&session_token,&user_data,&app_dbs).await; // println!("Rest store: {}",&result_store); // let cookie = Cookie::build(SESSION_COOKIE_NAME, session_token.to_owned()) // // .domain(domain) // .path("/") // .secure(true) // .http_only(true) // .finish(); // cookies.remove(Cookie::new(SESSION_COOKIE_NAME, "")); // cookies.add(cookie); // } ( req_handler.req_header.header, result.to_owned() ).into_response() // "Hello, World!" } route("/page/:name", get(page_handler)) }