first commit

This commit is contained in:
2026-03-14 20:50:05 -04:00
commit 0c9af957fe
25 changed files with 1122 additions and 0 deletions

64
auth-api/src/main.rs Normal file
View File

@@ -0,0 +1,64 @@
mod routes;
mod tokens;
use axum::{routing::post, Router};
use sqlx::postgres::PgPoolOptions;
use std::sync::Arc;
use tokens::TokenService;
use tower_http::cors::{Any, CorsLayer};
use tower_http::trace::TraceLayer;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
#[derive(Clone)]
pub struct AppState {
pub db: sqlx::PgPool,
pub tokens: Arc<TokenService>,
}
#[tokio::main]
async fn main() -> anyhow::Result<()> {
dotenvy::dotenv().ok();
tracing_subscriber::registry()
.with(tracing_subscriber::EnvFilter::new(
std::env::var("RUST_LOG").unwrap_or_else(|_| "auth_api=debug,tower_http=debug".into()),
))
.with(tracing_subscriber::fmt::layer())
.init();
let database_url = std::env::var("DATABASE_URL").expect("DATABASE_URL must be set");
let jwt_secret = std::env::var("JWT_SECRET").expect("JWT_SECRET must be set");
let db = PgPoolOptions::new()
.max_connections(5)
.connect(&database_url)
.await?;
sqlx::migrate!("../../db/migrations")
.run(&db)
.await?;
let state = AppState {
db,
tokens: Arc::new(TokenService::new(jwt_secret)),
};
let cors = CorsLayer::new()
.allow_origin(Any)
.allow_headers(Any)
.allow_methods(Any);
let app = Router::new()
.route("/register", post(routes::register::register))
.route("/login", post(routes::login::login))
.route("/refresh", post(routes::refresh::refresh))
.route("/logout", post(routes::logout::logout))
.layer(cors)
.layer(TraceLayer::new_for_http())
.with_state(state);
let addr = "0.0.0.0:3001";
tracing::info!("auth-api listening on {addr}");
let listener = tokio::net::TcpListener::bind(addr).await?;
axum::serve(listener, app).await?;
Ok(())
}