mirror of
https://github.com/osmarks/mycorrhiza.git
synced 2026-10-05 00:41:41 +00:00
Auth: Do not let users with weird characters in name register
This commit is contained in:
+37
-33
@@ -27,7 +27,7 @@ func initAuth(r *mux.Router) {
|
||||
return
|
||||
}
|
||||
if cfg.AllowRegistration {
|
||||
r.HandleFunc("/register", handlerRegister)
|
||||
r.HandleFunc("/register", handlerRegister).Methods(http.MethodPost, http.MethodGet)
|
||||
}
|
||||
if cfg.TelegramEnabled {
|
||||
r.HandleFunc("/telegram-login", handlerTelegramLogin)
|
||||
@@ -60,34 +60,38 @@ func handlerRegister(w http.ResponseWriter, rq *http.Request) {
|
||||
views.Register(rq),
|
||||
),
|
||||
)
|
||||
} else if rq.Method == http.MethodPost {
|
||||
var (
|
||||
username = rq.PostFormValue("username")
|
||||
password = rq.PostFormValue("password")
|
||||
err = user.Register(username, password, "editor", "local", false)
|
||||
)
|
||||
if err != nil {
|
||||
log.Printf("Failed to register ‘%s’: %s", username, err.Error())
|
||||
w.Header().Set("Content-Type", mime.TypeByExtension(".html"))
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
_, _ = io.WriteString(
|
||||
w,
|
||||
views.Base(
|
||||
viewutil.MetaFrom(w, rq),
|
||||
lc.Get("auth.register_title"),
|
||||
fmt.Sprintf(
|
||||
`<main class="main-width"><p>%s</p><p><a href="/register">%s<a></p></main>`,
|
||||
err.Error(),
|
||||
lc.Get("auth.try_again"),
|
||||
),
|
||||
),
|
||||
)
|
||||
} else {
|
||||
log.Printf("Successfully registered ‘%s’", username)
|
||||
user.LoginDataHTTP(w, rq, username, password)
|
||||
http.Redirect(w, rq, "/"+rq.URL.RawQuery, http.StatusSeeOther)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
var (
|
||||
username = rq.PostFormValue("username")
|
||||
password = rq.PostFormValue("password")
|
||||
err = user.Register(username, password, "editor", "local", false)
|
||||
)
|
||||
if err != nil {
|
||||
log.Printf("Failed to register ‘%s’: %s", username, err.Error())
|
||||
w.Header().Set("Content-Type", mime.TypeByExtension(".html"))
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
_, _ = io.WriteString(
|
||||
w,
|
||||
views.Base(
|
||||
viewutil.MetaFrom(w, rq),
|
||||
lc.Get("auth.register_title"),
|
||||
fmt.Sprintf(
|
||||
`<main class="main-width"><p>%s</p><p><a href="/register">%s<a></p></main>`,
|
||||
err.Error(),
|
||||
lc.Get("auth.try_again"),
|
||||
),
|
||||
),
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
log.Printf("Successfully registered ‘%s’", username)
|
||||
if err := user.LoginDataHTTP(w, username, password); err != nil {
|
||||
return
|
||||
}
|
||||
http.Redirect(w, rq, "/"+rq.URL.RawQuery, http.StatusSeeOther)
|
||||
}
|
||||
|
||||
// handlerLogout shows the logout form (GET) or logs the user out (POST).
|
||||
@@ -134,12 +138,12 @@ func handlerLogin(w http.ResponseWriter, rq *http.Request) {
|
||||
var (
|
||||
username = util.CanonicalName(rq.PostFormValue("username"))
|
||||
password = rq.PostFormValue("password")
|
||||
err = user.LoginDataHTTP(w, rq, username, password)
|
||||
err = user.LoginDataHTTP(w, username, password)
|
||||
)
|
||||
if err != "" {
|
||||
if err != nil {
|
||||
w.Header().Set("Content-Type", "text/html;charset=utf-8")
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
_, _ = io.WriteString(w, views.Base(viewutil.MetaFrom(w, rq), err, views.LoginError(err, lc)))
|
||||
_, _ = io.WriteString(w, views.Base(viewutil.MetaFrom(w, rq), err.Error(), views.LoginError(err.Error(), lc)))
|
||||
return
|
||||
}
|
||||
http.Redirect(w, rq, "/", http.StatusSeeOther)
|
||||
@@ -191,8 +195,8 @@ func handlerTelegramLogin(w http.ResponseWriter, rq *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
errmsg := user.LoginDataHTTP(w, rq, username, "")
|
||||
if errmsg != "" {
|
||||
errmsg := user.LoginDataHTTP(w, username, "")
|
||||
if errmsg != nil {
|
||||
log.Printf("Failed to login ‘%s’ using Telegram: %s", username, err.Error())
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
_, _ = io.WriteString(
|
||||
|
||||
Reference in New Issue
Block a user