Skip password requirement on OAuth signup

This makes it possible to complete OAuth signup without creating a
password on the WriteFreely instance.

A user can then add a password to their account through their Account
Settings page without any admin action (all of this logic is already in
place).

Ref T715 T712
This commit is contained in:
Matt Baer 2020-01-16 14:25:33 -05:00
parent b5a38efd28
commit f7dabd39c2

View file

@ -91,14 +91,20 @@ func (h oauthHandler) viewOauthSignup(app *App, w http.ResponseWriter, r *http.R
return h.showOauthSignupPage(app, w, r, tp, err) return h.showOauthSignupPage(app, w, r, tp, err)
} }
hashedPass, err := auth.HashPass([]byte(r.FormValue(oauthParamPassword))) var err error
if err != nil { hashedPass := []byte{}
return h.showOauthSignupPage(app, w, r, tp, fmt.Errorf("unable to hash password")) clearPass := r.FormValue(oauthParamPassword)
hasPass := clearPass != ""
if hasPass {
hashedPass, err = auth.HashPass([]byte(clearPass))
if err != nil {
return h.showOauthSignupPage(app, w, r, tp, fmt.Errorf("unable to hash password"))
}
} }
newUser := &User{ newUser := &User{
Username: r.FormValue(oauthParamUsername), Username: r.FormValue(oauthParamUsername),
HashedPass: hashedPass, HashedPass: hashedPass,
HasPass: true, HasPass: hasPass,
Email: prepareUserEmail(r.FormValue(oauthParamEmail), h.EmailKey), Email: prepareUserEmail(r.FormValue(oauthParamEmail), h.EmailKey),
Created: time.Now().Truncate(time.Second).UTC(), Created: time.Now().Truncate(time.Second).UTC(),
} }
@ -135,10 +141,6 @@ func (h oauthHandler) validateOauthSignup(r *http.Request) error {
if len(collTitle) == 0 { if len(collTitle) == 0 {
collTitle = username collTitle = username
} }
password := r.FormValue("password")
if len(password) == 0 {
return impart.HTTPError{Status: http.StatusBadRequest, Message: "Password is too short."}
}
email := r.FormValue(oauthParamEmail) email := r.FormValue(oauthParamEmail)
if len(email) > 0 { if len(email) > 0 {
parts := strings.Split(email, "@") parts := strings.Split(email, "@")