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