github.com/serge-v/zero@v1.0.2-0.20220911142406-af4b6a19e68a/examples/how-to-user-registration/main.go (about)

     1  package main
     2  
     3  import (
     4  	"flag"
     5  	"fmt"
     6  	"log"
     7  	"net/http"
     8  
     9  	"github.com/serge-v/zero"
    10  )
    11  
    12  var deploy = flag.Bool("deploy", false, "")
    13  
    14  func handleRegister(w http.ResponseWriter, r *http.Request) {
    15  	if err := r.ParseForm(); err != nil {
    16  		http.Error(w, err.Error(), http.StatusBadRequest)
    17  		return
    18  	}
    19  
    20  	email := r.PostFormValue("email")
    21  	password := r.PostFormValue("password")
    22  	if email == "" {
    23  		http.Error(w, "email is empty", http.StatusBadRequest)
    24  		return
    25  	}
    26  	if password == "" {
    27  		http.Error(w, "password is empty", http.StatusBadRequest)
    28  		return
    29  	}
    30  
    31  	u, err := db.createUser(email, password)
    32  	if err != nil {
    33  		log.Println(err)
    34  	}
    35  
    36  	link := "http://localhost:8098/confirm?rand=" + u.RandomHash
    37  
    38  	fmt.Println("registration email sent to " + email)
    39  }
    40  
    41  func handleHomePage(w http.ResponseWriter, r *http.Request) {
    42  	http.ServeFile(w, r, "home.html")
    43  }
    44  
    45  func handleCss(w http.ResponseWriter, r *http.Request) {
    46  	http.ServeFile(w, r, "main.css")
    47  }
    48  
    49  func handleDemo(w http.ResponseWriter, r *http.Request) {
    50  	http.ServeFile(w, r, "demo.html")
    51  }
    52  
    53  var db userDB
    54  
    55  func main() {
    56  	flag.Parse()
    57  
    58  	if *deploy {
    59  		if err := zero.Deploy(8097); err != nil {
    60  			log.Fatal(err)
    61  		}
    62  		return
    63  	}
    64  
    65  	db = loadDB("/tmp/demo.json")
    66  
    67  	http.HandleFunc("/", handleHomePage)
    68  	http.HandleFunc("/main.css", handleCss)
    69  	http.HandleFunc("/demo", handleDemo)
    70  	http.HandleFunc("/register", handleRegister)
    71  
    72  	if err := http.ListenAndServe("127.0.0.1:8098", nil); err != nil {
    73  		log.Fatal(err)
    74  	}
    75  }