commit fc867e5b5042a2865303ebf36d8f35f04f3d400b
parent be49324ac0c0e73ea712b3a589a21d2947a76853
Author: Peter Kosyh <p.kosyh@gmail.com>
Date: Thu, 3 Sep 2020 21:47:21 +0300
register form added
Diffstat:
2 files changed, 41 insertions(+), 1 deletion(-)
diff --git a/ii-node/tpl/register.tpl b/ii-node/tpl/register.tpl
@@ -0,0 +1,8 @@
+{{template "header.tpl"}}
+<form method="post" enctype="application/x-www-form-urlencoded" action="/register">
+<input type="text" name="username" class="login" placeholder="username"><br>
+<input type="password" name="password" class="passwd" placeholder="password"><br>
+<input type="text" name="email" class="email" placeholder="email"><br>
+<button class="form-button">Submit</button>
+</form>
+{{template "footer.tpl"}}
diff --git a/ii-node/web.go b/ii-node/web.go
@@ -23,6 +23,36 @@ type WebContext struct {
User *ii.User
}
+func www_register(user *ii.User, www WWW, w http.ResponseWriter, r *http.Request) error {
+ ctx := WebContext{ User: user }
+ ii.Trace.Printf("www register")
+ switch r.Method {
+ case "GET":
+ err := www.tpl.ExecuteTemplate(w, "register.tpl", ctx)
+ return err
+ case "POST":
+ if err := r.ParseForm(); err != nil {
+ ii.Error.Printf("Error in POST request: %s", err)
+ return err
+ }
+ user := r.FormValue("username")
+ password := r.FormValue("password")
+ email := r.FormValue("email")
+
+ udb := ii.LoadUsers(*users_opt)
+ err := udb.Add(user, email, password)
+ if err != nil {
+ ii.Info.Printf("Can not register user %s: %s", user, err)
+ return err
+ }
+ ii.Info.Printf("Registered user: %s", user)
+ http.Redirect(w, r, "/login", http.StatusSeeOther)
+ default:
+ return nil
+ }
+ return nil
+}
+
func www_login(user *ii.User, www WWW, w http.ResponseWriter, r *http.Request) error {
ctx := WebContext{ User: user }
ii.Trace.Printf("www login")
@@ -45,7 +75,7 @@ func www_login(user *ii.User, www WWW, w http.ResponseWriter, r *http.Request) e
exp := time.Now().Add(10 * 365 * 24 * time.Hour)
cookie := http.Cookie{Name: "pauth", Value: udb.Secret(user), Expires: exp}
http.SetCookie(w, &cookie)
- ii.Info.Printf("User logged in: %s:%s\n", user, password)
+ ii.Info.Printf("User logged in: %s\n", user)
http.Redirect(w, r, "/", http.StatusSeeOther)
default:
return nil
@@ -290,6 +320,8 @@ func handleWWW(www WWW, w http.ResponseWriter, r *http.Request) error {
return www_index(user, www, w, r)
} else if path == "login" {
return www_login(user, www, w, r)
+ } else if path == "register" {
+ return www_register(user, www, w, r)
} else if ii.IsMsgId(args[0]) {
page := 1
if len(args) > 1 {