-elif [ "$MODE" = "user" -a "$1" = "addtogroup" ]; then
- USER=$2
- GROUP=$3
- GROUPS=`id -n -G $USER | sed -e's/^[^ ]* //;s/ /,/g'`
- if ! echo ",$GROUPS," | grep -q ",$GROUP," ; then
- echo "Adding user $USER to group $GROUP" | `bannercmd "${MODE}mod-$USER"`
- usermod -G "$GROUPS,$GROUP" $USER
+
+ ${mode}remove $name
+}
+
+addtogroup() {
+ local user="$1"
+ local group="$2"
+ local uid=$(id -un "$user" 2>/dev/null)
+ local gid=$(getgid "$group" 2>/dev/null)
+
+ if [ -z "$gid" ]; then
+ if [ "$quiet" ]; then
+ return
+ else
+ die "group $group does not exist"
+ fi
+ fi
+
+ if [ -z "$uid" ]; then
+ if [ "$quiet" ]; then
+ return
+ else
+ die "user $user does not exist"
+ fi
+ fi
+
+ groups=$(id -n -G $user)
+ if [[ " $groups " != *\ $group\ * ]]; then
+ echo "Adding user $user to group $group" | $(bannercmd "${MODE}mod-$user")
+ for grp in $groups $group; do
+ new="$new${new:+,}$grp"
+ done
+ usermod -G "$new" $user