#!/bin/bash

FICHFUNCS="/usr/bin/vx-funcs-bash"
[ -f "${FICHFUNCS}" ] && . "${FICHFUNCS}" "null"

# 1) Comprobamos que es el usuario root quien quiere ejecutar el programa, sino salimos:
MENSAJE="Error. Debes ser el usuario root para poder modificar el autologin del lightdm"
vx-check_user_root "${MENSAJE}"

# 2) Preparamos la auditoria:
LOG="$(basename "${0}").log"
vx-log_xsession -o "${LOG}"

# 3) Comprobamos que existe el archivo de configuración de lightdm:
FICH_LIGHTDM="/etc/lightdm/lightdm.conf"
[[ ! -f "${FICH_LIGHTDM}" ]] &&
	echo "Error: No existe el fichero de configuración de lightdm ${FICH_LIGHTDM}" >&2 &&
	exit 1

function crear-usuario() {
	TEXTO="  Se va a crear un usuario para que inicie sesión automática  \n\
   Ten en cuenta los siguientes aspectos:   \n\n\
   1.- El nombre del usuario no debe tener espacios en blanco \n\
   2.- No utilizes mayúsculas para el nombre \n\
   3.- Puedes usar números \n"
	DATOS=$(yad --center --width 400 \
		--window-icon vitalinux \
		--image "${ICONO}" \
		--title "Inicio de Sesión Automático" \
		--text-align center --justify="center" \
		--text "${TEXTO}" \
		--form \
		--field="Nombre de Usuario" \
		--field="Password":H \
		--field="Repetir Password":H \
		--field="Comentario" \
		--button="gtk-ok:0" --button="gtk-cancel:1")
	(("${?}" != 0)) && exit 0
	NOMBRE=$(echo "${DATOS}" | cut -d"|" -f1)
	PASS=$(echo "${DATOS}" | cut -d"|" -f2)
	REPPASS=$(echo "${DATOS}" | cut -d"|" -f3)
	COMENTARIO=$(echo "${DATOS}" | cut -d"|" -f4)
	if ! grep "^${NOMBRE}:" /etc/passwd &&
		test "$PASS" == "$REPPASS" &&
		useradd -m -d "/home/${NOMBRE}" \
			-s /bin/bash -p "$(printf "${PASS}" | mkpasswd -s -m md5)" \
			-c "${NOMBRE} - $COMENTARIO" "${NOMBRE}"; then
		vx-autologin-cli "${NOMBRE}"
	else
		yad --center --width 500 \
			--window-icon vitalinux \
			--title "Inicio de Sesión Automático" \
			--text-align center \
			--image "${ICONO}" \
			--text "  ¡¡El usuario ${NOMBRE} ya existe!!  \n  o  \n  ¡¡Las Password no Coinciden!!  " \
			--button="Continuar":0
		crear-usuario
	fi
}

function decidir-usuario-inicio-sesion() {
	LISTADO=($(vx-usuarios-graficos) "Sin-Inicio-Sesion-Automático" "Usuario LDAP" "Usuario Nuevo a Crear")
	USUARIO="$(yad --center --width 500 \
		--window-icon "vitalinux" \
		--title "Inicio de Sesión Automático" \
		--text-align center \
		--image "${ICONO}" \
		--entry \
		--text "$1" \
		--entry-text \
		"${LISTADO[@]}" \
		--buttons-layout "center" \
		--button="Continuar:0" --button="Cancelar:1")"

	[[ ! $? -eq 0 ]] && exit 0

	case "${USUARIO}" in
	"Usuario Nuevo a Crear") crear-usuario ;;
	*) vx-autologin-cli "${USUARIO}" ;;
	esac

	TEXTO=" ¡¡Hecho!! Ya se ha configurado el usuario de Inicio de Sesión Automático: <b>${USUARIO}</b> \n Debes <b>REINICIAR el EQUIPO</b> para verificarlo."
	(("${?}" == 0)) &&
		yad --center --title "Cambio de usuario de inicio de sesión Automático" \
			--window-icon "vitalinux" \
			--image "${ICONO}" \
			--fixed \
			--text-align center \
			--text "${TEXTO}" \
			--buttons-layout "center" \
			--button="gtk-ok:0"
}

SECCION="Seat:*"
PARAM="autologin-user"
# ACTUAL="$(grep '^autologin-user=' "${FICH_LIGHTDM}" | cut -d "=" -f2)"
ACTUAL="$(crudini --get "${FICH_LIGHTDM}" "${SECCION}" "${PARAM}" 2>/dev/null)"
! getent passwd "${ACTUAL}" >/dev/null 2>&1 && ACTUAL="null"
TEXTO1="  Actualmente el equipo inicia sesión automática con el usuario: <b>${ACTUAL}</b>  \n\n  Selecciona el Usuario con quien deseas que el equipo inicie <b>Sesión de manera Automática</b>:  "
TEXTO2="  Actualmente el equipo <b>NO</b> inicia Sesión Automática con ningún usuario.  \n\n  Selecciona el Usuario con quien deseas que el equipo inicie <b>Sesión de manera Automática</b>:  "
ICONO="user_icon"

[[ "${ACTUAL}" != "null" ]] &&
	decidir-usuario-inicio-sesion "${TEXTO1}" ||
	decidir-usuario-inicio-sesion "${TEXTO2}"
