gitea_ui/src/controllers/debug.rs
Mahmoud Emad 4cc61a955d feat: Add .gitignore and initial project structure
- Add a comprehensive .gitignore to manage project files.
- Create the basic project structure including Cargo.toml,
  LICENSE, and README.md.
- Add basic project documentation.
2025-05-11 09:09:45 +03:00

73 lines
2.4 KiB
Rust

use actix_web::{HttpRequest, HttpResponse, Responder, Result};
use actix_session::Session;
use serde_json::json;
/// Controller for debugging
pub struct DebugController;
impl DebugController {
/// Display debug information
pub async fn debug_info(req: HttpRequest, session: Session) -> Result<impl Responder> {
// Collect cookies
let mut cookies = Vec::new();
if let Ok(cookie_iter) = req.cookies() {
for cookie in cookie_iter.iter() {
cookies.push(json!({
"name": cookie.name(),
"value": cookie.value(),
"http_only": cookie.http_only(),
"secure": cookie.secure(),
"same_site": format!("{:?}", cookie.same_site()),
"path": cookie.path(),
}));
}
}
// Collect session data
let mut session_data = Vec::new();
// Get session keys
let mut session_keys = Vec::new();
if let Ok(Some(csrf_token)) = session.get::<String>("oauth_csrf_token") {
session_data.push(json!({
"key": "oauth_csrf_token",
"value": csrf_token,
}));
session_keys.push("oauth_csrf_token".to_string());
}
if let Ok(Some(user)) = session.get::<String>("user") {
session_data.push(json!({
"key": "user",
"value": user,
}));
session_keys.push("user".to_string());
}
if let Ok(Some(auth_token)) = session.get::<String>("auth_token") {
session_data.push(json!({
"key": "auth_token",
"value": auth_token,
}));
session_keys.push("auth_token".to_string());
}
// Add session keys to response
session_data.push(json!({
"key": "_session_keys",
"value": session_keys.join(", "),
}));
// Create response
let response = json!({
"cookies": cookies,
"session": session_data,
"csrf_token_session": session.get::<String>("oauth_csrf_token").unwrap_or(None),
"csrf_token_cookie": req.cookie("oauth_csrf_token").map(|c| c.value().to_string()),
"csrf_token_debug_cookie": req.cookie("oauth_csrf_token_debug").map(|c| c.value().to_string()),
});
Ok(HttpResponse::Ok().json(response))
}
}