]> git.plutz.net Git - shellwiki/commitdiff
Merge commit 'f12ebac72fc935c789fddcce165c07c91577e425'
authorPaul Hänsch <paul@plutz.net>
Tue, 13 Jun 2023 10:54:34 +0000 (12:54 +0200)
committerPaul Hänsch <paul@plutz.net>
Tue, 13 Jun 2023 10:54:34 +0000 (12:54 +0200)
1  2 
cgilite/users.sh

diff --combined cgilite/users.sh
index 6a6833e96c592043669006bbeec91b628a70667e,20a58abf0f7e3da1da69602af9ec192ffa76c82d..20a58abf0f7e3da1da69602af9ec192ffa76c82d
@@@ -36,6 -36,10 +36,10 @@@ LOCAL_USER='local 
    USER_EXPIRE USER_DEVICES USER_FUTUREUSE
  '
  
+ # == TRANSLATIONS ==
+ # override all functions marked with "TRANSLATION"
+ # sed -n '/TRANSLATION$/,/^}/p;' <cgilite/users.sh
  unset USER_IDMAP
  eval "$UNSET_USER"
  
@@@ -218,6 -222,30 +222,30 @@@ user_pwhash()
    printf '%s\n' "${hash%% *}"
  }
  
+ user_register_email() {  # TRANSLATION
+   "$SENDMAIL" -t -f "$MAILFROM" <<-EOF
+       From: ${MAILFROM}
+       To: ${email}
+       Subject: Your account registration at ${HTTP_HOST%:*}
+       Someone tried to sign up for a user account using this email address.
+       You can activate your account using this link:
+           ${SCHEMA}://${HTTP_HOST}${_BASE}${PATH_INFO}?user_confirm=${uid}+$(session_mac "$uid")
+       This registration link will expire after $((USER_CONFIRMEXPIRE / 3600)) hours.
+       If you did not request an account at ${HTTP_HOST%:*}, then someone else
+       probably entered your email address by accident. In this case you shoud
+       simply ignore this message and we will remove your email address from
+       our database within the next day.
+       This is an automatic email. Any direct reply will not be received.
+       Your Account Registration Robot.
+       EOF
+ }
  user_register(){
    # reserve account, send registration mail
    # preliminary uid, expiration, signature
      elif new_user "$uid" status=pending email="$email" expire="$((_DATE + USER_CONFIRMEXPIRE))"; then
        debug "Sending Activation Link:" \
              "${SCHEMA}://${HTTP_HOST}${_BASE}${PATH_INFO}?user_confirm=${uid}+$(session_mac "$uid")"
-       "$SENDMAIL" -t -f "$MAILFROM" <<-EOF
-       From: ${MAILFROM}
-       To: ${email}
-       Subject: Your account registration at ${HTTP_HOST%:*}
-       Someone tried to sign up for a user account using this email address.
-       You can activate your account using this link:
-           ${SCHEMA}://${HTTP_HOST}${_BASE}${PATH_INFO}?user_confirm=${uid}+$(session_mac "$uid")
-       This registration link will expire after $((USER_CONFIRMEXPIRE / 3600)) hours.
-       If you did not request an account at ${HTTP_HOST%:*}, then someone else
-       probably entered your email address by accident. In this case you shoud
-       simply ignore this message and we will remove your email address from
-       our database within the next day.
-       This is an automatic email. Any direct reply will not be received.
-       Your Account Registration Robot.
-       EOF
+       user_register_email
        REDIRECT "${_BASE}${PATH_INFO}#USER_REGISTER_CONFIRM"
      else
        REDIRECT "${_BASE}${PATH_INFO}#ERROR_USER_NOLOCK"
    fi
  }
  
- user_invite(){
-   local uid="$(timeid)"
-   local email="$(POST email |user_checkemail)"
-   local message="$(POST message)"
-   if [ ! "email" ]; then
-     REDIRECT "${_BASE}${PATH_INFO}#ERROR_EMAIL_INVALID"
-   elif user_emailexist "$email"; then
-     REDIRECT "${_BASE}${PATH_INFO}#ERROR_EMAIL_EXISTS"
-   elif new_user "$uid" status=pending email="$email" expire="$((_DATE + USER_CONFIRMEXPIRE))"; then
-     debug "Sending Invitation Link:" \
-           "${SCHEMA}://${HTTP_HOST}${_BASE}${PATH_INFO}?user_confirm=${uid}+$(session_mac "$uid")"
-     "$SENDMAIL" -t -f "$MAILFROM" <<-EOF
+ user_invite_email(){  # TRANSLATION
+   "$SENDMAIL" -t -f "$MAILFROM" <<-EOF
        From: ${MAILFROM}
        To: ${email}
        Subject: You have been invited to ${HTTP_HOST%:*}
        This is an automatic email. Any direct reply will not be received.
        Your Account Registration Robot.
        EOF
+ }
+ user_invite(){
+   local uid="$(timeid)"
+   local email="$(POST email |user_checkemail)"
+   local message="$(POST message)"
+   if [ ! "email" ]; then
+     REDIRECT "${_BASE}${PATH_INFO}#ERROR_EMAIL_INVALID"
+   elif user_emailexist "$email"; then
+     REDIRECT "${_BASE}${PATH_INFO}#ERROR_EMAIL_EXISTS"
+   elif new_user "$uid" status=pending email="$email" expire="$((_DATE + USER_CONFIRMEXPIRE))"; then
+     debug "Sending Invitation Link:" \
+           "${SCHEMA}://${HTTP_HOST}${_BASE}${PATH_INFO}?user_confirm=${uid}+$(session_mac "$uid")"
+     user_invite_email
      REDIRECT "${_BASE}${PATH_INFO}#USER_REGISTER_CONFIRM"
    else
      REDIRECT "${_BASE}${PATH_INFO}#ERROR_USER_NOLOCK"
@@@ -474,17 -486,15 +486,15 @@@ w_user_update()
    fi
  }
  
- w_user_register(){
-   if [ "$(GET user_confirm)" ]; then
-     w_user_confirm
-   elif [ "$USER_REGISTRATION" != true -a -s "$user_db" ]; then
-     cat <<-EOF
+ w_user_register_disabled(){  # TRANSLATION
+   cat <<-EOF
        [div #user_register .disabled
        User Registration is disabled.
        ]
        EOF
-   elif [ "$USER_REQUIREEMAIL" = true ]; then
-     cat <<-EOF
+ }
+ w_user_register_sendmail(){  # TRANSLATION
+   cat <<-EOF
        [form #user_register .registeremail method=POST
          [p We will send an activation mail to your email address.
            You can continue the signup process when you click on the
          [submit "action" "user_register" Sign Up]
        ]
        EOF
-   elif [ "$USER_REQUIREEMAIL" != true ]; then
-     cat <<-EOF
+ }
+ w_user_register_direct(){  # TRANSLATION
+   cat <<-EOF
        [form #user_register .registername method=POST
            [input name=uname placeholder="Choose Username" tooltip="Your username may contain any character but the @ sign. It must be at least 3 characters long, and it must start with a letter." pattern="^\[\\\\p{L}\]\[\\\\p{L}0-9 -~\]{2,127}$" autocomplete=off]
          [input type=password name=pw placeholder="Choose Passphrase" pattern=".{6,}"]
          [submit "action" "user_register" Sign Up]
        ]
        EOF
-   fi
  }
  
- w_user_confirm(){
-   local UID_  UNAME   STATUS  EMAIL   PWSALT  PWHASH  EXPIRE  DEVICES FUTUREUSE
-   local user_confirm="$(GET user_confirm)"
-   local uid="${user_confirm% *}" signature="${user_confirm#* }"
+ w_user_register(){
+   if [ "$(GET user_confirm)" ]; then
+     w_user_confirm
+   elif [ "$USER_REGISTRATION" != true -a -s "$user_db" ]; then
+     w_user_register_disabled
+   elif [ "$USER_REQUIREEMAIL" = true ]; then
+     w_user_register_sendmail
+   elif [ "$USER_REQUIREEMAIL" != true ]; then
+     w_user_register_direct
+   fi
+ }
  
-   if [ "$signature" = "$(session_mac "$uid")" ]; then
-     read -r UID_      UNAME   STATUS  EMAIL   PWSALT  PWHASH  EXPIRE  DEVICES FUTUREUSE <<-EOF
-       $(grep "^${uid} " "$user_db")
-       EOF
-     if [ "$STATUS" = pending -a "$EXPIRE" -gt "$_DATE" ]; then
-       cat <<-EOF
+ w_user_confirm_proceed(){  # TRANSLATION
+   cat <<-EOF
        [form #user_confirm method=POST
          [input type=hidden name=uid value="${uid}"]
          [input type=hidden name=signature value="${signature}"]
          [submit "action" "user_confirm" Finish Registration]
        ]
        EOF
-     else
-       cat <<-EOF
+ }
+ w_user_confirm_expired(){  # TRANSLATION
+   cat <<-EOF
        [div #user_confirm .expired
          [p This activation link is not valid anymore.]
        ]
        EOF
-     fi
-   else
-     cat <<-EOF
+ }
+ w_user_confirm_invalid(){  # TRANSLATION
+   cat <<-EOF
        [div #user_confirm .invalid
          [p This activation link is invalid. Make sure you copied the whole activation link from your email and be careful not to include any line breaks.]
        ]
        EOF
-   fi
  }
  
- w_user_invite(){
-   local uid invlink
+ w_user_confirm(){
+   local UID_  UNAME   STATUS  EMAIL   PWSALT  PWHASH  EXPIRE  DEVICES FUTUREUSE
+   local user_confirm="$(GET user_confirm)"
+   local uid="${user_confirm% *}" signature="${user_confirm#* }"
  
-   if [ "$(GET user_confirm)" ]; then
-     w_user_confirm
-   elif [ "$USER_ID" -a "$SENDMAIL" ]; then
-     cat <<-EOF
+   if [ "$signature" = "$(session_mac "$uid")" ]; then
+     read -r UID_      UNAME   STATUS  EMAIL   PWSALT  PWHASH  EXPIRE  DEVICES FUTUREUSE <<-EOF
+       $(grep "^${uid} " "$user_db")
+       EOF
+     if [ "$STATUS" = pending -a "$EXPIRE" -gt "$_DATE" ]; then
+       w_user_confirm_proceed
+     else
+       w_user_confirm_expired
+     fi
+   else
+     w_user_confirm_invalid
+   fi
+ }
+ w_user_invite_email(){  # TRANSLATION
+   cat <<-EOF
        [form #user_invite method=POST
          [input placeholder="Email Recipient" name=email autocomplete=off]
          [textarea name="message" placeholder="Message to recipient" . ]
          [submit "action" "user_invite" Send Invitation]
        ]
        EOF
-   elif [ "$USER_ID" ]; then
-     uid="$(timeid)"
-     new_user "$uid" status=pending expire="$((_DATE + USER_CONFIRMEXPIRE))"
-     invlink="${SCHEMA}://${HTTP_HOST}${_BASE}${PATH_INFO}?user_confirm=${uid}+$(session_mac "$uid")"
-     debug "New Invitation Link: $invlink"
-     cat <<-EOF
+ }
+ w_user_invite_link(){  # TRANSLATION
+   cat <<-EOF
        [div #user_invite .link
            [p An anonymous user account has been set up. Send the following link to the intended user, so they may claim their account. The link will remain valid for $((USER_CONFIRMEXPIRE / 3600)) hours.]
            [a href="$(HTML "$invlink")" . $(HTML "$invlink")]
            [p [a href="#" . Set up another account]]
        ]
        EOF
-   else
-     cat <<-EOF
+ }
+ w_user_invite_deny(){  # TRANSLATION
+   cat <<-EOF
        [div #user_invite .notallowed
          Only registered users may send an invitation to another user.
        ]
        EOF
+ }
+ w_user_invite(){
+   local uid invlink
+   if [ "$(GET user_confirm)" ]; then
+     w_user_confirm
+   elif [ "$USER_ID" -a "$SENDMAIL" ]; then
+     w_user_invite_email
+   elif [ "$USER_ID" ]; then
+     uid="$(timeid)"
+     new_user "$uid" status=pending expire="$((_DATE + USER_CONFIRMEXPIRE))"
+     invlink="${SCHEMA}://${HTTP_HOST}${_BASE}${PATH_INFO}?user_confirm=${uid}+$(session_mac "$uid")"
+     debug "New Invitation Link: $invlink"
+     w_user_invite_link
+   else
+     w_user_invite_deny
    fi
  }
  
- w_user_login(){
-   if [ ! "$USER_ID" ]; then
-     cat <<-EOF
+ w_user_login_logon(){  # TRANSLATION
+   cat <<-EOF
        [form #user_login .login method=POST
          [input name=uname placeholder="Username or Email" autocomplete=off]
          [input type=password name=pw placeholder="Passphrase"]
          [submit "action" "user_login" Login]
        ]
        EOF
-   elif [ "$USER_ID" ]; then
-     cat <<-EOF
+ }
+ w_user_login_logoff(){  # TRANSLATION
+   cat <<-EOF
        [form #user_login .logout method=POST
          [p Logged in as [span . $(HTML ${USER_NAME})]]
          [submit "action" "user_logout" Logout]
        ]
        EOF
+ }
+ w_user_login(){
+   if [ ! "$USER_ID" ]; then
+     w_user_login_logon
+   elif [ "$USER_ID" ]; then
+     w_user_login_logoff
    fi
  }