diff --git a/nextcloud/sync_admin_rights.sh b/nextcloud/sync_admin_rights.sh index 4575912..b662216 100644 --- a/nextcloud/sync_admin_rights.sh +++ b/nextcloud/sync_admin_rights.sh @@ -1,30 +1,58 @@ #!/bin/bash +# Activer le mode debug et sortie en cas d'erreur +set -e +set -u + +# Configuration +CONTAINER="neah-nextcloud" +LOG_FILE="/var/log/nextcloud/admin_sync.log" + +log() { + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" +} + +# Créer le répertoire de logs si nécessaire +mkdir -p "$(dirname "$LOG_FILE")" + +log "Début de la synchronisation des droits administrateurs" + # Récupérer la liste des administrateurs actuels -current_admins=$(docker exec -u 33 neah-nextcloud php occ user:list --output=json | jq -r '.[] | select(.isadmin == true) | .uid') +log "Récupération des administrateurs actuels..." +current_admins=$(docker exec -u 33 $CONTAINER php occ user:list --output=json | jq -r 'to_entries[] | select(.value.isEnabled == true and .value.isAdmin == true) | .key') # Pour chaque admin actuel for admin in $current_admins; do - # Vérifier si l'utilisateur est toujours dans le groupe admin - is_in_admin_group=$(docker exec -u 33 neah-nextcloud php occ group:list --output=json | jq -r --arg user "$admin" '.admin.users | contains([$user])') + log "Vérification des droits pour l'administrateur: $admin" + + # Vérifier si l'utilisateur est dans le groupe admin + is_in_admin_group=$(docker exec -u 33 $CONTAINER php occ group:list --output=json | \ + jq -r --arg group "admin" --arg user "$admin" '.[$group].users | contains([$user]) // false') if [ "$is_in_admin_group" = "false" ]; then - # Retirer les droits admin si l'utilisateur n'est plus dans le groupe - docker exec -u 33 neah-nextcloud php occ user:info "$admin" --output=json | jq -r '.groups[]' - docker exec -u 33 neah-nextcloud php occ group:removeuser admin "$admin" + log "Retrait des droits admin pour: $admin" + docker exec -u 33 $CONTAINER php occ user:info "$admin" --output=json + docker exec -u 33 $CONTAINER php occ group:removeuser admin "$admin" fi done # Récupérer la liste des membres du groupe admin -admin_group_members=$(docker exec -u 33 neah-nextcloud php occ group:list --output=json | jq -r '.admin.users[]') +log "Récupération des membres du groupe admin..." +admin_group_members=$(docker exec -u 33 $CONTAINER php occ group:list --output=json | \ + jq -r '.admin.users[]? // empty') # Pour chaque membre du groupe admin for member in $admin_group_members; do + log "Vérification des droits admin pour le membre: $member" + # Vérifier si l'utilisateur a les droits admin - is_admin=$(docker exec -u 33 neah-nextcloud php occ user:list --output=json | jq -r --arg user "$member" '.[$user].isadmin') + is_admin=$(docker exec -u 33 $CONTAINER php occ user:list --output=json | \ + jq -r --arg user "$member" '.[$user].isAdmin // false') if [ "$is_admin" = "false" ]; then - # Ajouter les droits admin - docker exec -u 33 neah-nextcloud php occ group:adduser admin "$member" + log "Ajout des droits admin pour: $member" + docker exec -u 33 $CONTAINER php occ group:adduser admin "$member" fi -done \ No newline at end of file +done + +log "Fin de la synchronisation des droits administrateurs" \ No newline at end of file