diff --git a/installer.sh.in b/installer.sh.in index 3eb7597..57ea8db 100644 --- a/installer.sh.in +++ b/installer.sh.in @@ -36,6 +36,7 @@ USERLOGIN_DONE= USERPASSWORD_DONE= USERNAME_DONE= USERGROUPS_DONE= +USERACCOUNT_DONE= BOOTLOADER_DONE= PARTITIONS_DONE= NETWORK_DONE= @@ -694,7 +695,7 @@ menu_useraccount() { while true; do _preset=$(get_option USERNAME) [ -z "$_preset" ] && _preset="Void User" - DIALOG --inputbox "Enter a user name for login '$(get_option USERLOGIN)' :" \ + DIALOG --inputbox "Enter a display name for login '$(get_option USERLOGIN)' :" \ ${INPUTSIZE} "$_preset" if [ $? -eq 0 ]; then set_option USERNAME "$(cat $ANSWER)" @@ -767,10 +768,7 @@ menu_useraccount() { } set_useraccount() { - [ -z "$USERLOGIN_DONE" ] && return - [ -z "$USERPASSWORD_DONE" ] && return - [ -z "$USERNAME_DONE" ] && return - [ -z "$USERGROUPS_DONE" ] && return + [ -z "$USERACCOUNT_DONE" ] && return chroot $TARGETDIR useradd -m -G "$(get_option USERGROUPS)" \ -c "$(get_option USERNAME)" "$(get_option USERLOGIN)" echo "$(get_option USERLOGIN):$(get_option USERPASSWORD)" | \ @@ -990,6 +988,17 @@ menu_network() { fi } +validate_useraccount() { + # don't check that USERNAME has been set because it can be empty + local USERLOGIN=$(get_option USERLOGIN) + local USERPASSWORD=$(get_option USERPASSWORD) + local USERGROUPS=$(get_option USERGROUPS) + + if [ -n "$USERLOGIN" ] && [ -n "$USERPASSWORD" ] && [ -n "$USERGROUPS" ]; then + USERACCOUNT_DONE=1 + fi +} + validate_filesystems() { local mnts dev size fstype mntpt mkfs rootfound fmt local usrfound efi_system_partition @@ -1256,6 +1265,16 @@ please do so before starting the installation.${RESET}" ${MSGBOXSIZE} return 1 fi + # Validate useraccount. All parameters must be set (name, password, login name, groups). + validate_useraccount + + if [ -z "$USERACCOUNT_DONE" ]; then + DIALOG --yesno "${BOLD}The user account is not set up properly.${RESET}\n\n +${BOLD}${RED}WARNING: no user will be created. You will only be able to login \ +with the root user in your new system.${RESET}\n\n +${BOLD}Do you want to continue?${RESET}" 10 60 || return + fi + DIALOG --yesno "${BOLD}The following operations will be executed:${RESET}\n\n ${BOLD}${TARGETFS}${RESET}\n ${BOLD}${RED}WARNING: data on partitions will be COMPLETELY DESTROYED for new \ @@ -1474,7 +1493,7 @@ menu() { "Locale") menu_locale && [ -n "$LOCALE_DONE" ] && DEFITEM="Timezone";; "Timezone") menu_timezone && [ -n "$TIMEZONE_DONE" ] && DEFITEM="RootPassword";; "RootPassword") menu_rootpassword && [ -n "$ROOTPASSWORD_DONE" ] && DEFITEM="UserAccount";; - "UserAccount") menu_useraccount && [ -n "$USERNAME_DONE" ] && [ -n "$USERPASSWORD_DONE" ] \ + "UserAccount") menu_useraccount && [ -n "$USERLOGIN_DONE" ] && [ -n "$USERPASSWORD_DONE" ] \ && DEFITEM="BootLoader";; "BootLoader") menu_bootloader && [ -n "$BOOTLOADER_DONE" ] && DEFITEM="Partition";; "Partition") menu_partitions && [ -n "$PARTITIONS_DONE" ] && DEFITEM="Filesystems";;