scripte/add_user_to_group.sh

57 lines
1.9 KiB
Bash

#!/bin/bash
source ./data_utils.sh
add_user_to_group() {
initialize_user_list
# Benutzerliste abrufen (nur aktive Benutzer)
users=$(read_users | grep ":aktiv$" | awk -F':' '{print $1 " " $1}')
if [[ -z "$users" ]]; then
dialog --msgbox "Keine aktiven Benutzer verfügbar." 10 30
return
fi
# Benutzer grafisch auswählen
username=$(dialog --menu "Benutzer auswählen:" 20 50 10 $users 3>&1 1>&2 2>&3)
if [[ -z "$username" ]]; then
dialog --msgbox "Kein Benutzer ausgewählt." 10 30
return
fi
# Gruppenliste abrufen (nur aktive Gruppen)
groups=$(read_groups | grep ":aktiv$" | awk -F':' '{print $1 " " $1}')
if [[ -z "$groups" ]]; then
dialog --msgbox "Keine aktiven Gruppen verfügbar." 10 30
return
fi
# Gruppe grafisch auswählen
groupname=$(dialog --menu "Gruppe auswählen, zu der $username hinzugefügt werden soll:" 20 50 10 $groups 3>&1 1>&2 2>&3)
if [[ -z "$groupname" ]]; then
dialog --msgbox "Keine Gruppe ausgewählt." 10 30
return
fi
# Benutzer zur Gruppe hinzufügen
existing_user=$(grep "^$username:" <(read_users))
current_groups=$(echo "$existing_user" | cut -d':' -f4)
# Überprüfen, ob Benutzer bereits in der Gruppe ist
if [[ "$current_groups" == *"$groupname"* ]]; then
dialog --msgbox "Benutzer $username ist bereits in der Gruppe $groupname." 10 30
return
fi
# GID der Gruppe abrufen
group_entry=$(grep "^$groupname:" <(read_groups))
group_gid=$(echo "$group_entry" | cut -d':' -f2)
# Aktualisieren der Gruppenzugehörigkeit
updated_groups="${current_groups},${groupname}"
sed -i "s|^$username:.*|$username:$(echo "$existing_user" | cut -d':' -f2-3):$updated_groups:aktiv|" "$USER_LIST"
dialog --msgbox "Benutzer $username wurde erfolgreich zur Gruppe $groupname hinzugefügt." 10 30
}
add_user_to_group