use axum::{Json, Router, routing::get};
use axum_authentik_auth::AuthentikUser;
async fn me(user: AuthentikUser) -> Json<AuthentikUser> {
Json(user)
}
async fn dashboard(user: AuthentikUser) -> String {
if user.has_any_group(&["admin", "editor"]) {
format!("Dashboard for {} (privileged)", user.username)
} else {
format!("Read-only view for {}", user.username)
}
}
#[tokio::main]
async fn main() {
let app = Router::new()
.route("/api/me", get(me))
.route("/api/dashboard", get(dashboard));
let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
println!("Listening on http://{}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
}