]> git.plutz.net Git - httpchat/commitdiff
display error messages for invalid nick changes
authorPaul Hänsch <paul@plutz.net>
Wed, 4 Nov 2020 14:02:28 +0000 (15:02 +0100)
committerPaul Hänsch <paul@plutz.net>
Wed, 4 Nov 2020 14:02:28 +0000 (15:02 +0100)
index.cgi
usernick.sh
webchat.css

index f44d288db0e41ba30f093e2a1c485424b61172ed..a5665c14796e542f2b61f6b610a07bdabd8e9322 100755 (executable)
--- a/index.cgi
+++ b/index.cgi
@@ -32,13 +32,18 @@ yield_page(){
 
 settings_menu(){
   printf '
-    [form #settings method="POST" action="?"
+    [form #settings method="POST" action="?settings"
       [hidden "session_key" "%s"]
-      [h1 Settings][a .settings href="?" Close]'
+      [h1 Settings][a .settings href="?" Close]
+  ' "$SESSION_KEY"
+  if [ "$ERROR" ]; then
+    printf '[p .error %s %s]' "${ERROR%% *}" "$(HTML "${ERROR#.* }")"
+    unset ERROR
+  fi
   printf '
       [a .section href="#nick" Nickname]
       [div #nick [input name="nickname" value="%s"][submit "action" "nick" Set Cookie]]
-  ' "$SESSION_KEY" "$(HTML "${nickname#\?}")"
+  ' "$(HTML "${nickname#\?}")"
   printf '
       [a .section href="#register" Register Nickname]
       [div #register
@@ -75,6 +80,7 @@ case ${LOCATION} in
     if [ -d "$_DATA/@${LOCATION#~}" ]; then
       pubinfo="$_DATA/@${LOCATION#~}/pubinfo"
     else 
+      # ToDo Edit / Display of public user information
       REDIRECT /
     fi
     ;;
index 8d62390b2d1872b91d8aa215b3c45c30defd39f1..3880fbe61972c6331b038ac3211b8ffbfa8ed925 100755 (executable)
@@ -4,7 +4,7 @@ UNAME_VALID='
   # Remove trailing CR, which may have been added by browser
   s;\r$;;;
   # Collapse white spaces
-  s;[\r\t\n ]+; ;;
+  s;[\r\t\n ]+; ;g;
   # Remove starting and trailing white spaces
   s;^ ;;; s; $;;;
   # Usernames starting with & # ? @ + will be invalid
@@ -47,8 +47,7 @@ case $(POST action) in
       SET_COOKIE +1209600 "nick=$(POST nickname |URL)"
       REDIRECT "$(URL "/$LOCATION")"
     else
-      # ToDo: Return Error Message
-      REDIRECT "$(URL "/$LOCATION")?settings#nick"
+      export ERROR=".nick This nickname has already been registered elsewhere"
     fi
     ;;
   register)
@@ -62,8 +61,7 @@ case $(POST action) in
       SET_COOKIE +"$((86400 * 365))" "nick=$(URL "${regnick}")"
       REDIRECT "$(URL "/$LOCATION")"
     else
-      # ToDo: Return Error Message
-      REDIRECT "$(URL "/$LOCATION")?settings#register"
+      export ERROR=".register This nickname has already been registered elsewhere"
     fi
     ;;
 esac
index ff70761ded124d6d67b36679022e8fda019ba947..4309596a20bccbc06d1e9cb82e1c672d35b11631 100644 (file)
@@ -59,6 +59,11 @@ button {
   content: "x";
   padding: 0 1ex;
 }
+#settings .error {
+  padding: 1ex 1ex .5ex 1ex;
+  background-color: #FCC;
+  font-weight: bold;
+}
 #settings a.section {
   display: block;
   font-weight: bold;
@@ -74,6 +79,8 @@ button {
   overflow: hidden;
   transition: max-height .5s;
 }
+#settings .error.nick ~ a.section + #nick,
+#settings .error.register ~ a.section + #register,
 #settings a.section + *:target {
   max-height: 20ex;
   padding: 1ex 1ex .5ex 1ex;