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"
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"
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
}