#!/usr/bin/env bash MODULE_USER_SUDO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" MODULE_USER_SUDO_PROJECT_ROOT="$(cd "$MODULE_USER_SUDO_DIR/../../.." && pwd)" # shellcheck source=lib/package.sh source "$MODULE_USER_SUDO_PROJECT_ROOT/lib/package.sh" # shellcheck source=modules/system/user-sudo/config.sh source "$MODULE_USER_SUDO_DIR/config.sh" # shellcheck source=modules/system/user-sudo/metadata.conf source "$MODULE_USER_SUDO_DIR/metadata.conf" module_user_sudo_require_package() { if package_is_installed "sudo"; then ui_info "Paquet sudo deja installe" return 0 fi ui_warn "Paquet sudo absent, installation en cours" package_refresh_indexes package_install sudo log_info "Paquet sudo installe" ui_success "Paquet sudo installe" } module_user_sudo_metadata() { printf '%s|%s|%s\n' "$MODULE_ID" "$MODULE_NAME" "$MODULE_DESCRIPTION" } module_user_sudo_check() { local target_user="${1:-$POSTINSTALL_USER_SUDO_TARGET_USER}" if ! package_is_installed "sudo"; then ui_warn "Paquet sudo non installe" return 1 fi if ! system_user_exists "$target_user"; then ui_error "Utilisateur introuvable : $target_user" return 1 fi if ! system_group_exists "$POSTINSTALL_USER_SUDO_TARGET_GROUP"; then ui_error "Groupe requis introuvable : $POSTINSTALL_USER_SUDO_TARGET_GROUP" return 1 fi if system_user_in_group "$target_user" "$POSTINSTALL_USER_SUDO_TARGET_GROUP"; then ui_success "Utilisateur $target_user deja membre du groupe sudo" return 0 fi ui_warn "Utilisateur $target_user non membre du groupe sudo" return 1 } module_user_sudo_install() { local target_user="${1:-$POSTINSTALL_USER_SUDO_TARGET_USER}" module_user_sudo_require_package || return 1 if ! system_user_exists "$target_user"; then ui_error "Impossible de configurer sudo : utilisateur absent ($target_user)" return 1 fi if ! system_group_exists "$POSTINSTALL_USER_SUDO_TARGET_GROUP"; then ui_error "Impossible de configurer sudo : groupe absent ($POSTINSTALL_USER_SUDO_TARGET_GROUP)" return 1 fi if system_user_in_group "$target_user" "$POSTINSTALL_USER_SUDO_TARGET_GROUP"; then log_info "Aucun changement sudo requis pour $target_user" ui_info "Aucun changement : $target_user est deja dans sudo" else usermod -aG "$POSTINSTALL_USER_SUDO_TARGET_GROUP" "$target_user" log_info "Utilisateur $target_user ajoute au groupe sudo" ui_success "Utilisateur $target_user ajoute au groupe sudo" fi module_user_sudo_configure "$target_user" } module_user_sudo_configure() { local target_user="${1:-$POSTINSTALL_USER_SUDO_TARGET_USER}" if command -v visudo >/dev/null 2>&1; then visudo -cf /etc/sudoers >/dev/null log_info "Validation visudo reussie pour $target_user" ui_success "Configuration sudo validee avec visudo" else ui_warn "visudo indisponible, validation sudo non effectuee" fi } module_user_sudo_test() { local target_user="${1:-$POSTINSTALL_USER_SUDO_TARGET_USER}" package_is_installed "sudo" || return 1 system_user_exists "$target_user" || return 1 system_group_exists "$POSTINSTALL_USER_SUDO_TARGET_GROUP" || return 1 system_user_in_group "$target_user" "$POSTINSTALL_USER_SUDO_TARGET_GROUP" }