This commit is contained in:
42
src/lib.rs
42
src/lib.rs
@@ -1,21 +1,47 @@
|
||||
pub mod handlers;
|
||||
pub mod models;
|
||||
|
||||
use axum::{routing::{get, post}, Router};
|
||||
use axum_sessions::{async_session::MemoryStore, SessionLayer};
|
||||
use oauth2::basic::BasicClient;
|
||||
use axum::{
|
||||
Router,
|
||||
routing::{get, post},
|
||||
};
|
||||
use axum_session::{SessionConfig, SessionLayer, SessionStore};
|
||||
use axum_session_sqlx::SessionSqlitePool;
|
||||
use sqlx::SqlitePool;
|
||||
use tower_http::services::ServeDir;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct AppState {
|
||||
pub pool: SqlitePool,
|
||||
pub oidc_client: BasicClient,
|
||||
pub oidc_client: oauth2::Client<
|
||||
oauth2::StandardErrorResponse<oauth2::basic::BasicErrorResponseType>,
|
||||
oauth2::StandardTokenResponse<oauth2::EmptyExtraTokenFields, oauth2::basic::BasicTokenType>,
|
||||
oauth2::StandardTokenIntrospectionResponse<
|
||||
oauth2::EmptyExtraTokenFields,
|
||||
oauth2::basic::BasicTokenType,
|
||||
>,
|
||||
oauth2::StandardRevocableToken,
|
||||
oauth2::StandardErrorResponse<oauth2::RevocationErrorResponseType>,
|
||||
oauth2::EndpointSet,
|
||||
oauth2::EndpointNotSet,
|
||||
oauth2::EndpointNotSet,
|
||||
oauth2::EndpointNotSet,
|
||||
oauth2::EndpointSet,
|
||||
>,
|
||||
}
|
||||
|
||||
pub fn create_app(state: AppState, session_secret: Vec<u8>) -> Router {
|
||||
let store = MemoryStore::new();
|
||||
let session_layer = SessionLayer::new(store, &session_secret).with_secure(false);
|
||||
pub async fn create_app(state: AppState, session_secret: Vec<u8>, pool: SqlitePool) -> Router {
|
||||
//This Defaults as normal Cookies.
|
||||
//To enable Private cookies for integrity, and authenticity please check the next Example.
|
||||
let session_config = SessionConfig::default()
|
||||
.with_table_name("sessions_table")
|
||||
.with_key(axum_session::Key::from(&session_secret));
|
||||
|
||||
// create SessionStore and initiate the database tables
|
||||
let session_store =
|
||||
SessionStore::<SessionSqlitePool>::new(Some(pool.clone().into()), session_config)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let app = Router::new()
|
||||
.route("/", get(handlers::index))
|
||||
@@ -23,7 +49,7 @@ pub fn create_app(state: AppState, session_secret: Vec<u8>) -> Router {
|
||||
.route("/auth/callback", get(handlers::callback))
|
||||
.route("/input", post(handlers::input_post))
|
||||
.with_state(state)
|
||||
.layer(session_layer)
|
||||
.layer(SessionLayer::new(session_store))
|
||||
.nest_service("/static", ServeDir::new("static"));
|
||||
|
||||
#[cfg(test)]
|
||||
|
||||
Reference in New Issue
Block a user