Files
geo/bao/bin/bao
pierre 2f5946a184 feat: Version 3.5.2 - Configuration Stripe et gestion des immeubles
- Configuration complète Stripe pour les 3 environnements (DEV/REC/PROD)
  * DEV: Clés TEST Pierre (mode test)
  * REC: Clés TEST Client (mode test)
  * PROD: Clés LIVE Client (mode live)
- Ajout de la gestion des bases de données immeubles/bâtiments
  * Configuration buildings_database pour DEV/REC/PROD
  * Service BuildingService pour enrichissement des adresses
- Optimisations pages et améliorations ergonomie
- Mises à jour des dépendances Composer
- Nettoyage des fichiers obsolètes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 18:26:27 +01:00

273 lines
8.2 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# =============================================================================
# BAO - Back-office Admin Operations
# Menu principal interactif pour gérer les données Geosector
# =============================================================================
set -euo pipefail
# Répertoire du script
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BAO_ROOT="$(dirname "$SCRIPT_DIR")"
ENV_FILE="$BAO_ROOT/config/.env"
# Couleurs
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
MAGENTA='\033[0;35m'
CYAN='\033[0;36m'
BOLD='\033[1m'
NC='\033[0m' # No Color
# Fonctions d'affichage
log_info() {
echo -e "${BLUE}${NC} $*"
}
log_success() {
echo -e "${GREEN}${NC} $*"
}
log_error() {
echo -e "${RED}${NC} $*" >&2
}
log_warning() {
echo -e "${YELLOW}${NC} $*"
}
# Affiche le titre principal
show_header() {
clear
echo -e "${CYAN}"
cat << "EOF"
╔════════════════════════════════════════════════════════════════╗
║ ║
║ ██████╗ █████╗ ██████╗ ║
║ ██╔══██╗██╔══██╗██╔═══██╗ ║
║ ██████╔╝███████║██║ ██║ ║
║ ██╔══██╗██╔══██║██║ ██║ ║
║ ██████╔╝██║ ██║╚██████╔╝ ║
║ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ║
║ ║
║ Back-office Admin Operations - Geosector ║
║ ║
╚════════════════════════════════════════════════════════════════╝
EOF
echo -e "${NC}\n"
}
# Charge une variable depuis .env
get_env_var() {
local key="$1"
grep "^${key}=" "$ENV_FILE" 2>/dev/null | cut -d'=' -f2- | tr -d ' "'
}
# Sélectionne l'environnement
select_environment() {
echo -e "${BOLD}Sélectionnez un environnement :${NC}\n"
local envs=()
local counter=1
for env in DVA RCA PRA; do
local enabled=$(get_env_var "${env}_ENABLED")
if [[ "$enabled" == "true" ]]; then
local ssh_host=$(get_env_var "${env}_SSH_HOST")
echo -e " ${GREEN}${counter})${NC} ${BOLD}${env}${NC} (${ssh_host})"
envs+=("$env")
((counter++))
else
echo -e " ${YELLOW}-${NC} ${env} ${YELLOW}(désactivé)${NC}"
fi
done
echo -e " ${RED}q)${NC} Quitter\n"
while true; do
read -p "Votre choix: " choice
if [[ "$choice" == "q" || "$choice" == "Q" ]]; then
echo ""
log_info "Au revoir !"
exit 0
fi
if [[ "$choice" =~ ^[0-9]+$ ]] && [[ $choice -ge 1 ]] && [[ $choice -le ${#envs[@]} ]]; then
SELECTED_ENV="${envs[$((choice-1))]}"
return 0
fi
log_error "Choix invalide"
done
}
# Affiche le menu des actions
show_action_menu() {
echo -e "\n${BOLD}═══════════════════════════════════════════════════════════════${NC}"
echo -e "${BOLD}Environnement: ${GREEN}${SELECTED_ENV}${NC}"
echo -e "${BOLD}═══════════════════════════════════════════════════════════════${NC}\n"
echo -e "${BOLD}Actions disponibles :${NC}\n"
echo -e " ${CYAN}1)${NC} Lister les utilisateurs"
echo -e " ${CYAN}2)${NC} Décrypter un utilisateur spécifique"
echo -e " ${CYAN}3)${NC} Rechercher par email"
echo -e " ${CYAN}4)${NC} Lister les entités (amicales)"
echo -e " ${CYAN}5)${NC} Décrypter une entité spécifique"
echo -e " ${CYAN}6)${NC} État des tunnels SSH"
echo -e " ${CYAN}7)${NC} Fermer tous les tunnels"
echo -e " ${YELLOW}8)${NC} Changer d'environnement"
echo -e " ${RED}q)${NC} Quitter\n"
}
# Execute une action
execute_action() {
local action="$1"
case "$action" in
1)
echo ""
read -p "Filtrer par entité ? (ID ou vide): " entite_filter
read -p "Filtrer par rôle ? (ID ou vide): " role_filter
read -p "Limite de résultats ? (défaut: 50): " limit_input
local cmd="$SCRIPT_DIR/list-users $SELECTED_ENV"
[[ -n "$entite_filter" ]] && cmd="$cmd --entite=$entite_filter"
[[ -n "$role_filter" ]] && cmd="$cmd --role=$role_filter"
[[ -n "$limit_input" ]] && cmd="$cmd --limit=$limit_input"
echo ""
$cmd
;;
2)
echo ""
read -p "ID de l'utilisateur: " user_id
if [[ -z "$user_id" || ! "$user_id" =~ ^[0-9]+$ ]]; then
log_error "ID invalide"
return 1
fi
echo ""
"$SCRIPT_DIR/decrypt-user" "$SELECTED_ENV" "$user_id"
;;
3)
echo ""
read -p "Email à rechercher: " email
if [[ -z "$email" ]]; then
log_error "Email vide"
return 1
fi
echo ""
"$SCRIPT_DIR/search-email" "$SELECTED_ENV" "$email"
;;
4)
echo ""
read -p "Uniquement les entités avec Stripe ? (o/N): " stripe_filter
read -p "Limite de résultats ? (défaut: 50): " limit_input
local cmd="$SCRIPT_DIR/list-entites $SELECTED_ENV"
[[ "$stripe_filter" == "o" || "$stripe_filter" == "O" ]] && cmd="$cmd --stripe"
[[ -n "$limit_input" ]] && cmd="$cmd --limit=$limit_input"
echo ""
$cmd
;;
5)
echo ""
read -p "ID de l'entité: " entite_id
if [[ -z "$entite_id" || ! "$entite_id" =~ ^[0-9]+$ ]]; then
log_error "ID invalide"
return 1
fi
echo ""
"$SCRIPT_DIR/decrypt-entite" "$SELECTED_ENV" "$entite_id"
;;
6)
echo ""
"$SCRIPT_DIR/_ssh-tunnel.sh" status
;;
7)
echo ""
"$SCRIPT_DIR/_ssh-tunnel.sh" close-all
;;
8)
return 2 # Signal pour changer d'environnement
;;
q|Q)
echo ""
log_info "Fermeture des tunnels..."
"$SCRIPT_DIR/_ssh-tunnel.sh" close-all
echo ""
log_success "Au revoir !"
exit 0
;;
*)
log_error "Action invalide"
return 1
;;
esac
return 0
}
# Boucle principale
main() {
if [[ ! -f "$ENV_FILE" ]]; then
log_error "Fichier .env introuvable: $ENV_FILE"
log_info "Copiez config/.env.example vers config/.env"
exit 1
fi
# Vérifier que PHP est installé
if ! command -v php >/dev/null 2>&1; then
log_error "PHP n'est pas installé"
exit 1
fi
while true; do
show_header
select_environment
while true; do
show_header
show_action_menu
read -p "Votre choix: " action
execute_action "$action"
local exit_code=$?
if [[ $exit_code -eq 2 ]]; then
# Changer d'environnement
break
fi
echo ""
read -p "Appuyez sur Entrée pour continuer..."
done
done
}
# Gestion de Ctrl+C
trap 'echo ""; log_info "Fermeture des tunnels..."; $SCRIPT_DIR/_ssh-tunnel.sh close-all 2>/dev/null; echo ""; exit 0' INT
main "$@"