hlfw.ca

webbing

Download patch

ref: 1660993c74f597da20e803835a6012af823927af
parent: edae5b94cd40ecf25d9d9104985110cb665a55b8
author: Moses Olson, MD <52055478+nemo-olmax@users.noreply.github.com>
date: Mon Aug 12 06:48:34 PDT 2019

Add files via upload

--- /dev/null
+++ b/forms/login.go
@@ -1,0 +1,37 @@
+package forms
+
+import (
+	"net/http"
+	"github.com/albrow/forms"
+	"golang.org/x/text/message"
+	"olmax/router"
+)
+
+func init() {
+	b := &router.Form{
+		Access: router.GuestAuth,
+		Path: "login",
+		Validator: Login,
+		After: router.ValidateLogin,
+		Redirect: "/profile.html",
+	}
+	router.AddPost(b)
+}
+
+func Login(r *http.Request, p *message.Printer) []string {
+	var errors []string
+	data, err := forms.Parse(r)
+	if err != nil {
+		errors = append(errors, p.Sprint("Internal server error"))
+		return errors
+	}
+	val := data.Validator()
+	val.Require("email").Message(p.Sprint("Username required"))
+	val.MatchEmail("email").Message(p.Sprint("User name must be a valid email"))
+	val.Require("pass").Message(p.Sprint("Password required"))
+	val.MinLength("pass", 8).Message(p.Sprint("Password must be at least 8 characters"))
+	if val.HasErrors() {
+		errors = append(errors, val.Messages()...)
+	}
+	return errors
+}
--- /dev/null
+++ b/forms/newpassword.go
@@ -1,0 +1,40 @@
+package forms
+
+import (
+	"net/http"
+	"github.com/albrow/forms"
+	"golang.org/x/text/message"
+	"olmax/router"
+)
+
+func init() {
+	b := &router.Form{
+		Access: router.GuestAuth,
+		Path: "newpassword",
+		Validator: NewPassword,
+		Redirect: "/login.html",
+		After: router.SetPassword,
+	}
+	router.AddPost(b)
+}
+
+func NewPassword(r *http.Request, p *message.Printer) []string {
+	var errors []string
+	data, err := forms.Parse(r)
+	if err != nil {
+		errors = append(errors, "Internal server error")
+		return errors
+	}
+	val := data.Validator()
+	val.Require("password").Message(p.Sprintf("Password required"))
+	val.MinLength("password", 8).Message(p.Sprintf("Password must be at least 8 characters"))
+	val.Require("reenter").Message(p.Sprintf("Re-enter same password"))
+	val.MinLength("reenter", 8).Message(p.Sprintf("Password must be at least 8 characters"))
+	if val.HasErrors() {
+		errors = append(errors, val.Messages()...)
+	}
+	if data.Get("reenter") != data.Get("password") {
+		errors = append(errors, p.Sprint("Passwords do not match"))
+	}
+	return errors
+}
--- /dev/null
+++ b/forms/resetpassword.go
@@ -1,0 +1,35 @@
+package forms
+
+import (
+	"net/http"
+	"github.com/albrow/forms"
+	"golang.org/x/text/message"
+	"olmax/router"
+)
+
+func init() {
+	b := &router.Form{
+		Access: router.GuestAuth,
+		Path: "resetpassword",
+		Validator: Reset,
+		Redirect: "/login.html",
+		After: router.SendReset,
+	}
+	router.AddPost(b)
+}
+
+func Reset(r *http.Request, p *message.Printer) []string {
+	var errors []string
+	data, err := forms.Parse(r)
+	if err != nil {
+		errors = append(errors, "Internal server error")
+		return errors
+	}
+	val := data.Validator()
+	val.Require("email").Message(p.Sprintf("Valid email required"))
+	val.MatchEmail("email").Message(p.Sprintf("Invalid email"))
+	if val.HasErrors() {
+		errors = append(errors, val.Messages()...)
+	}
+	return errors
+}
--- /dev/null
+++ b/forms/signup.go
@@ -1,0 +1,41 @@
+package forms
+
+import (
+	"net/http"
+	"github.com/albrow/forms"
+	"golang.org/x/text/message"
+	"olmax/router"
+)
+
+func init() {
+	b := &router.Form{
+		Access: router.GuestAuth,
+		Path: "signup",
+		Validator: Signin,
+		Redirect: "/login.html",
+		After: router.SendSignup,
+	}
+	router.AddPost(b)
+}
+
+func Signin(r *http.Request, p *message.Printer) []string {
+	var errors []string
+	data, err := forms.Parse(r)
+	if err != nil {
+		errors = append(errors, "Internal server error")
+		return errors
+	}
+	val := data.Validator()
+	val.Require("fname").Message(p.Sprintf("First name required"))
+	val.MinLength("fname", 2).Message(p.Sprintf("First name must be at least 2 characters"))
+	val.Require("lname").Message(p.Sprintf("Last name required"))
+	val.MinLength("lname", 2).Message(p.Sprintf("Last name must be at least 2 characters"))
+	val.Require("email").Message(p.Sprintf("Valid email required"))
+	val.MatchEmail("email").Message(p.Sprintf("Invalid email"))
+	val.Require("pass").Message(p.Sprintf("Password required"))
+	val.MinLength("pass", 8).Message(p.Sprintf("Password must be at least 8 characters"))
+	if val.HasErrors() {
+		errors = append(errors, val.Messages()...)
+	}
+	return errors
+}
\ No newline at end of file