mirror of
https://github.com/speatzle/nfsense.git
synced 2025-06-27 14:59:36 +00:00
Move Router to main, Setup AppState
This commit is contained in:
parent
eaf9f2d3b1
commit
93c5eca7cd
6 changed files with 44 additions and 28 deletions
33
src/main.rs
33
src/main.rs
|
@ -1,10 +1,21 @@
|
|||
#![allow(dead_code)]
|
||||
|
||||
use std::{
|
||||
collections::HashMap,
|
||||
sync::{Arc, RwLock},
|
||||
};
|
||||
|
||||
use axum::{middleware, Router};
|
||||
use config_manager::ConfigManager;
|
||||
use state::AppState;
|
||||
use tower_cookies::CookieManagerLayer;
|
||||
use tracing::info;
|
||||
use tracing_subscriber;
|
||||
use web::auth::SessionState;
|
||||
|
||||
mod config_manager;
|
||||
mod definitions;
|
||||
mod state;
|
||||
mod web;
|
||||
|
||||
#[tokio::main]
|
||||
|
@ -12,13 +23,29 @@ async fn main() {
|
|||
tracing_subscriber::fmt::init();
|
||||
info!("Starting...");
|
||||
|
||||
// let mut config_manager = config_manager::new_config_manager().unwrap();
|
||||
// TODO Check Config Manager Setup Error
|
||||
let config_manager = ConfigManager::new().unwrap();
|
||||
|
||||
let main_router = web::router::get_router();
|
||||
let session_state = SessionState {
|
||||
sessions: Arc::new(RwLock::new(HashMap::new())),
|
||||
};
|
||||
|
||||
let app_state = AppState {
|
||||
config_manager,
|
||||
session_state,
|
||||
};
|
||||
|
||||
let main_router = Router::new()
|
||||
.merge(web::auth::routes())
|
||||
.merge(web::rpc::routes())
|
||||
.with_state(app_state)
|
||||
.layer(middleware::from_fn_with_state((), web::auth::mw_auth))
|
||||
.layer(CookieManagerLayer::new());
|
||||
// .fallback_service(service)
|
||||
|
||||
info!("Server started successfully");
|
||||
axum::Server::bind(&"[::]:8080".parse().unwrap())
|
||||
.serve(main_router.await.into_make_service())
|
||||
.serve(main_router.into_make_service())
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
|
|
8
src/state.rs
Normal file
8
src/state.rs
Normal file
|
@ -0,0 +1,8 @@
|
|||
use super::config_manager::ConfigManager;
|
||||
use super::web::auth::SessionState;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct AppState {
|
||||
pub config_manager: ConfigManager,
|
||||
pub session_state: SessionState,
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
use std::collections::HashMap;
|
||||
use std::hash::Hash;
|
||||
use std::sync::{Arc, RwLock};
|
||||
|
||||
use axum::routing::post;
|
||||
use axum::{Json, Router};
|
||||
|
@ -16,12 +17,12 @@ use axum::{
|
|||
const SESSION_COOKIE: &str = "session";
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
struct SessionState {
|
||||
sessions: HashMap<String, Session>,
|
||||
pub struct SessionState {
|
||||
pub sessions: Arc<RwLock<HashMap<String, Session>>>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
struct Session {
|
||||
pub struct Session {
|
||||
username: String,
|
||||
//expires: time,
|
||||
}
|
||||
|
@ -32,11 +33,7 @@ struct LoginParameters {
|
|||
password: String,
|
||||
}
|
||||
|
||||
pub fn routes() -> Router {
|
||||
let state = SessionState {
|
||||
sessions: HashMap::new(),
|
||||
};
|
||||
|
||||
pub fn routes() -> Router<super::super::AppState> {
|
||||
Router::new()
|
||||
.route("/session", post(session_handler))
|
||||
.route("/login", post(login_handler))
|
||||
|
|
|
@ -1,3 +1,2 @@
|
|||
pub mod auth;
|
||||
pub mod router;
|
||||
pub mod rpc;
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
use axum::{middleware, Router};
|
||||
|
||||
use tower_cookies::CookieManagerLayer;
|
||||
|
||||
#[derive(Clone)]
|
||||
struct tmp {}
|
||||
|
||||
pub async fn get_router() -> Router {
|
||||
Router::new()
|
||||
.merge(super::auth::routes())
|
||||
.nest("/api", super::rpc::routes())
|
||||
.layer(middleware::from_fn_with_state(tmp {}, super::auth::mw_auth))
|
||||
.layer(CookieManagerLayer::new())
|
||||
// .fallback_service(service)
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
use axum::Router;
|
||||
|
||||
pub fn routes() -> Router {
|
||||
pub fn routes() -> Router<super::super::AppState> {
|
||||
Router::new()
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue