botserver/src/directory/router.rs
Rodrigo Rodriguez (Pragmatismo) 92dbb7019e Add .env.example with comprehensive configuration template
The commit adds a complete example environment configuration file
documenting all available settings for BotServer, including logging,
database, server, drive, LLM, Redis, email, and feature flags.

Also removes hardcoded environment variable usage throughout the
codebase, replacing them with configuration via config.csv or
appropriate defaults. This includes:

- WhatsApp, Teams, Instagram adapter configurations
- Weather API key handling
- Email and directory service configurations
- Console feature conditionally compiles monitoring code
- Improved logging configuration with library suppression
2025-11-28 13:19:03 -03:00

103 lines
3.9 KiB
Rust

#![allow(dead_code)]
use axum::{
routing::{delete, get, post, put},
Router,
};
use std::sync::Arc;
use crate::shared::state::AppState;
use super::groups;
use super::users;
/// Configure all authentication, user management, group management routes
/// File management is handled by the existing /api/files routes in crate::api::files
pub fn configure() -> Router<Arc<AppState>> {
Router::new()
// ============================================================================
// User Management & Authentication
// ============================================================================
.route("/users/create", post(users::create_user))
.route("/users/{user_id}/update", put(users::update_user))
.route("/users/{user_id}/delete", delete(users::delete_user))
.route("/users/list", get(users::list_users))
.route("/users/search", get(users::list_users)) // Uses query params
.route("/users/{user_id}/profile", get(users::get_user_profile))
.route("/users/{user_id}/profile/update", put(users::update_user))
.route("/users/{user_id}/settings", get(users::get_user_profile))
.route("/users/{user_id}/permissions", get(users::get_user_profile))
.route("/users/{user_id}/roles", get(users::get_user_profile))
.route("/users/{user_id}/status", get(users::get_user_profile))
.route("/users/{user_id}/presence", get(users::get_user_profile))
.route("/users/{user_id}/activity", get(users::get_user_profile))
.route(
"/users/{user_id}/security/2fa/enable",
post(users::get_user_profile),
)
.route(
"/users/{user_id}/security/2fa/disable",
post(users::get_user_profile),
)
.route(
"/users/:user_id/security/devices",
get(users::get_user_profile),
)
.route(
"/users/:user_id/security/sessions",
get(users::get_user_profile),
)
.route(
"/users/{user_id}/notifications/preferences/update",
get(users::get_user_profile),
)
// ============================================================================
// Groups & Organizations
// ============================================================================
.route("/groups/create", post(groups::create_group))
.route("/groups/{group_id}/update", put(groups::update_group))
.route("/groups/{group_id}/delete", delete(groups::delete_group))
.route("/groups/list", get(groups::list_groups))
.route("/groups/search", get(groups::list_groups)) // Uses query params
.route("/groups/{group_id}/members", get(groups::get_group_members))
.route(
"/groups/{group_id}/members/add",
post(groups::add_group_member),
)
.route(
"/groups/{group_id}/members/roles",
post(groups::remove_group_member),
)
.route(
"/groups/{group_id}/permissions",
get(groups::get_group_members),
)
.route(
"/groups/{group_id}/settings",
get(groups::get_group_members),
)
.route(
"/groups/{group_id}/analytics",
get(groups::get_group_members),
)
.route(
"/groups/:group_id/join/request",
post(groups::add_group_member),
)
.route(
"/groups/:group_id/join/approve",
post(groups::add_group_member),
)
.route(
"/groups/:group_id/join/reject",
post(groups::remove_group_member),
)
.route(
"/groups/:group_id/invites/send",
post(groups::add_group_member),
)
.route(
"/groups/:group_id/invites/list",
get(groups::get_group_members),
)
}