Advertisement
Guest User

Untitled

a guest
Aug 25th, 2017
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. func Signup(w http.ResponseWriter, r *http.Request) {
  2. if r.Method == "GET" {
  3. // send signup form
  4. templates["signup"].Execute(w, nil)
  5.  
  6. } else if r.Method == "POST" {
  7. // parse form data and validate email and compare passwords
  8. vars := mux.Vars(r)
  9. email := vars["email"]
  10. username := vars["username"]
  11. password := vars["password"]
  12. confirm_password := vars["confirm_password"]
  13. if password != confirm_password {
  14. // handle error 'password must match'
  15. fmt.Fprintln(w, "Password and Confirm Password MUST match!")
  16. // return
  17. } else if validateEmail(email) { // validate email is proper
  18. fmt.Fprintln(w, email+" is not a valid email.")
  19. }
  20. // if passwords and email good, insert data into db and redirect to index
  21.  
  22. var user string
  23.  
  24. err := db.QueryRow("SELECT username FROM users WHERE username=?", username).Scan(&user)
  25.  
  26. switch {
  27. // Username is available
  28. case err == sql.ErrNoRows:
  29. hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
  30. if err != nil {
  31. http.Error(w, "Server error, unable to hash your password.", 500)
  32. return
  33. }
  34.  
  35. _, err = db.Exec("INSERT INTO users(username, email, password) VALUES(?, ?)", username, email, hashedPassword)
  36. if err != nil {
  37. http.Error(w, "Server error, unable to create your account.", 500)
  38. return
  39. }
  40.  
  41. w.Write([]byte("User created!"))
  42. return
  43. case err != nil:
  44. http.Error(w, "Server error, unable to create your account. some errororsrosr", 500)
  45. return
  46. default:
  47. http.Redirect(w, r, "/", 301)
  48. }
  49.  
  50. } else {
  51. // not POST or GET then WTF?!?
  52. http.Error(w, "Wut O.o", http.StatusMethodNotAllowed)
  53. }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement