#!/bin/bash
# Este script de presession (session-setup-script) corre como root, pero $USER es el usuario que se ha logueado:

GRUPO_CONGELACION="congelacion"

function congelar_usuario() {
    USUARIO="${1}"
    if getent passwd "${USUARIO}" 2> /dev/null ; then
        usermod -aG "${GRUPO_CONGELACION}" "${USUARIO}" && \
        echo "OK: ${GRUPO_CONGELACION} => ${USUARIO}" || \
        echo "ERROR: ${GRUPO_CONGELACION} => ${USUARIO}"
    fi
}

function descongelar_usuario() {
    USUARIO="${1}"
    if getent passwd "${USUARIO}" 2> /dev/null ; then
        # gpasswd -d usuario nombre_del_grupo
        deluser "${USUARIO}" "${GRUPO_CONGELACION}" && \
        echo "OK se ha quitado del grupo: ${GRUPO_CONGELACION} x> ${USUARIO}" || \
        echo "ERROR al quitar del grupo: ${GRUPO_CONGELACION} x> ${USUARIO}"
    fi
}

# Comprobamos que usuarios o grupos de usuarios se ha decidido congelar:
FICH_CONF_CONGELACION="/etc/default/vx-dga-variables/vx-dga-l-xfce4-kiosk.conf"
if [[ -f "${FICH_CONF_CONGELACION}" ]]; then
    for USU in $(crudini --get "${FICH_CONF_CONGELACION}" "" "USERS" 2> /dev/null) ; do
        [[ "${USU}" == "all" ]] && congelar_usuario "${USER}" && continue
        congelar_usuario "${USU}"
    done
    for GRUPO in $(crudini --get "${FICH_CONF_CONGELACION}" "" "GROUPS" 2> /dev/null) ; do
        [[ "${GRUPO}" == "all" ]] && congelar_usuario "${USER}" && continue
        if getent group "${GRUPO}" 2> /dev/null ; then
            for USU in $(members "${GRUPO}") ; do
                congelar_usuario "${USU}"
            done
        fi
    done
    for USU in $(crudini --get "${FICH_CONF_CONGELACION}" "" "USERS_EXCLUDED" 2> /dev/null) ; do
        [[ "${USU}" == "all" ]] && descongelar_usuario "${USER}" && continue
        descongelar_usuario "${USU}"
    done
    for GRUPO in $(crudini --get "${FICH_CONF_CONGELACION}" "" "GROUPS_EXCLUDED" 2> /dev/null) ; do
        [[ "${GRUPO}" == "all" ]] && descongelar_usuario "${USER}" && continue
        if getent group "${GRUPO}" 2> /dev/null ; then
            for USU in $(members "${GRUPO}") ; do
                descongelar_usuario "${USU}"
            done
        fi
    done
fi