3 . "$_EXEC/cgilite/storage.sh"
4 . "$_EXEC/cgilite/session.sh"
6 MOIN_USERS="${MOIN_USERS:-/srv/moinwiki/data/user/}"
7 user_db="${user_db:-${_DATA}/users.db}"
8 USER_ACCOUNTEXPIRE="${USER_ACCOUNTEXPIRE:-$((86400 * 730))}"
12 grep -qxF "email=${email}" "${MOIN_USERS%/}"/*
18 grep -qxF "name=${name}" "${MOIN_USERS%/}"/*
23 local UID_ UNAME STATUS EMAIL PWSALT PWHASH EXPIRE DEVICES FUTUREUSE
24 local name="$(POST uname)" pw="$(POST pw)"
25 local uname="$(STRING "$name")"
26 local moinfile="$(grep -lxF "name=${name}" "${MOIN_USERS%/}"/*)"
29 [ ! "$moinfile" ] && return 1 # no user record in MoinMoin
31 [ -f "$user_db" -a -r "$user_db" ] \
32 && while read -r UID_ UNAME STATUS EMAIL PWSALT PWHASH EXPIRE DEVICES FUTUREUSE; do
33 # Username already in main DB
34 [ "$UNAME" = "$uname" -o "$EMAIL" = "$uname" ] && return 1
37 moinpw="$(grep -E '^enc_password=\{PASSLIB\}' "$moinfile")"
38 moinpw="${moinpw#"enc_password={PASSLIB}"}"
41 from passlib.hash import sha512_crypt
42 if sha512_crypt.verify(input(), input()):
51 EMAIL="$(grep -E '^email=' "$moinfile")" EMAIL="${EMAIL#email=}"
53 PWHASH="$(printf '%s\n%s\n' "$pw" "$PWSALT" |sha256sum)"
54 printf '%s %s %s %s %s %s %i %s %s\n' \
55 "$(timeid)" "$(STRING "$name")" "active" "$(STRING "$EMAIL")" \
56 "$PWSALT" "${PWHASH%% *}" \
57 "$((_DATE + USER_ACCOUNTEXPIRE))" "\\" "\\" \
65 uname="$(POST uname)" email="$(POST email)"
67 [ "$REQUEST_METHOD" = POST ] && case "$(POST action)" in
69 # precede email/username check of default authenticator
70 if [ "$USER_REQUIREEMAIL" = true ]; then
71 [ "$email" ] && user_emailexist "$email" \
72 && REDIRECT "${_BASE}${PATH_INFO}#ERROR_EMAIL_EXISTS"
73 elif [ "$USER_REQUIREEMAIL" != true ]; then
74 [ "$uname" ] && user_nameexist "$uname" \
75 && REDIRECT "${_BASE}${PATH_INFO}#ERROR_UNAME_EXISTS"
79 # precede email check of default authenticator
80 [ "$email" ] && user_emailexist "$email" \
81 && REDIRECT "${_BASE}${PATH_INFO}#ERROR_EMAIL_EXISTS"
84 # precede username check of default authenticator
85 [ "$uname" ] && user_nameexist "$uname" \
86 && REDIRECT "${_BASE}${PATH_INFO}#ERROR_UNAME_EXISTS"
89 # verify password and write user record to db
90 user_login && debug "Set up new user record for \"$uname\"" \
92 user_logout|user_update|user_recover|user_disable)
93 # delegate to default authenticator
98 unset UID_ UNAME STATUS EMAIL PWSALT PWHASH EXPIRE DEVICES FUTUREUSE
100 . "$_EXEC/auth/default.sh"