#!/bin/sh

# addmacuser - ajoute un nouvel utilisateur au systme, avec son
#   rpertoire personnel, des donnes de configuration par dfaut, etc.
#
# Vous pouvez choisir d'attribuer  chaque utilisateur son propre groupe
# (ce qui ncessitera quelques modifications) ou garder le comportement
# par dfaut qui consiste  rassembler tout le monde dans le mme
# groupe. Adaptez dgroup et dgid  votre configuration personnelle.

dgroup="guest"; dgid=31     # groupe et identifiant de groupe par dfaut
hmdir="/Users"
shell="uninitialized"

if [ "$(/usr/bin/whoami)" != "root" ] ; then
  echo "$(basename $0): vous devez tre root pour excuter cette commande." >&2
  exit 1
fi

echo "Ajout d'un compte utilisateur sur $(hostname)"
echo -n "login: "     ; read login

if nireport . /users name | sed 's/[^[:alnum:]]//g' | grep "^$login$" ; then
  echo "$0: le compte $login existe dj" >&2
  exit 1
fi

uid1="$(nireport . /users uid | sort -n | tail -1)"
uid="$(( $uid1 + 1 ))"

homedir=$hmdir/$login

echo -n "nom complet: " ; read fullname

until [ -z "$shell" -o -x "$shell" ] ; do
  echo -n "shell: "     ; read shell
done

echo "Mise en place du compte $login pour $fullname..."
echo "uid=$uid  gid=$dgid  shell=$shell  home=$homedir"

niutil -create     . /users/$login
niutil -createprop . /users/$login passwd
niutil -createprop . /users/$login uid $uid
niutil -createprop . /users/$login gid $dgid
niutil -createprop . /users/$login realname "$fullname"
niutil -createprop . /users/$login shell $shell
niutil -createprop . /users/$login home $homedir

niutil -createprop . /users/$login _shadow_passwd ""

# ajout au groupe $dgroup
niutil -appendprop . /groups/$dgroup users $login

if ! mkdir -m 755 $homedir ; then
  echo "$0: je n'ai pas pu crer le rpertoire personnel $homedir" >&2
  echo "(J'ai toutefois cr le compte dans la base de donnes NetInfo." >&2
  echo " Continuez manuellement.)" >&2
  exit 1
fi

if [ -d /etc/skel ] ; then
  ditto /etc/skel/.[a-zA-Z]* $homedir
else
  ditto "/System/Library/User Template/English.lproj" $homedir
fi

chown -R ${login}:$dgroup $homedir 

echo "Veuillez entrer un mot de passe initial pour $login: "
passwd $login

echo "Termin. Le compte est configur et prt  l'emploi."
exit 0
