#!/usr/bin/env bash

DOSIS_GID=850
USER_UID_BASE=850

# add our dosis group
group_=dosis
if ! getent group ${group_} > /dev/null 2>&1; then
    echo "adding group ${group_}"
    groupadd -g ${DOSIS_GID} ${group_}
fi

function checkadduser() {
    uid_offset_="$1"
    user_="$2"
    fullname_="$3"
    group_="$4"
    groups_="$5"
    passenc_="$6"

	let uid_=${USER_UID_BASE}+${uid_offset_}
    let gid_=`getent group ${group_} | cut -d: -f3`

    if ! getent passwd ${user_} > /dev/null 2>&1; then
        echo "adding user ${user_}"
        if [ "${passenc_}" = "" ]; then
            useradd -u ${uid_} -c "${fullname_}" -g ${group_} -m -f -1 ${user_}
        else
            useradd -u ${uid_} -c "${fullname_}" -g ${group_} -m -f -1 -p ${passenc_} ${user_}
        fi
    fi

    if ! [ "`id -u ${user_}`" = "${uid_}" ]; then
		echo "changing user ${user_} uid to ${uid_}"
		usermod -u ${uid_} ${user_}
	fi

	if ! [ "`id -g ${user_}`" = "${gid_}" ]; then
	    echo "changing user ${user_} gid to ${gid_}"
	    usermod -g ${gid_} ${user_}
	fi

    echo "updating user ${user_}"

	# ensure user groups are exactly as specified
	usermod -G ${groups_} ${user_} > /dev/null 2>&1

	# ensure user has bash shell
	usermod -s /bin/bash ${user_} > /dev/null 2>&1
}

# add users
checkadduser 1 dPG "Dosis Program" dosis 'uucp,tty,dialout,lock,ftp' '$1$5Oiy6DDA$mNJ3W.rju/487ORGtKDwk.'
checkadduser 2 dSupport "Dosis Support" dosis 'uucp,tty,dialout' '$1$g4hBVX4K$5MjqiHJiF2P52/JoZw/Gx1'
checkadduser 3 dSuper "Dosis Super" dosis 'root,uucp,tty,dialout' '$6$EqM9ks54tAaWgb1Y$OjeMYawjA5s9PYzHIw5QND.CtPYE.QhLOhOQMOnXkas9hbuFBw5k5lQJBdTFNfQlLllDE.3kJzU8.xsdkOSi1.'
checkadduser 5 site_admin "Dosis SiteAdmin" dosis 'root,uucp,tty,dialout' ''

exit 0
