Advertisement
Guest User

server/controllers/register.go

a guest
Sep 8th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.36 KB | None | 0 0
  1. package controllers
  2.  
  3. import (
  4.     "database/sql"
  5.     "net/http"
  6.  
  7.     "../models"
  8.  
  9.     sessions "github.com/kataras/go-sessions"
  10.     "golang.org/x/crypto/bcrypt"
  11. )
  12.  
  13. var db *sql.DB
  14.  
  15. func Register(w http.ResponseWriter, r *http.Request) {
  16.     if r.Method != "POST" {
  17.         var data = map[string]interface{}{
  18.             "Title": "Register",
  19.         }
  20.         err := templates.ExecuteTemplate(w, "register.html", data)
  21.  
  22.         if err != nil {
  23.             http.Error(w, err.Error(), http.StatusInternalServerError)
  24.         }
  25.        
  26.         return
  27.     }
  28.  
  29.     username := r.FormValue("username")
  30.     nickname := r.FormValue("nickname")
  31.     email := r.FormValue("email")
  32.     password := r.FormValue("password")
  33.  
  34.     users := models.QueryUser(username)
  35.    
  36.     if (models.User{}) == users {
  37.         hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
  38.  
  39.         if len(hashedPassword) != 0 && checkErr(w, r, err) {
  40.             stmt, err := db.Prepare("INSERT INTO users SET username=?, nickname=?, email=?, password=?")
  41.  
  42.             if err == nil {
  43.                 _, err := stmt.Exec(&username, &nickname, &email, &hashedPassword)
  44.  
  45.                 if err != nil {
  46.                     http.Error(w, err.Error(), http.StatusInternalServerError)
  47.                     return
  48.                 }
  49.  
  50.                 users := models.QueryUser(username)
  51.  
  52.                 session := sessions.Start(w, r)
  53.                 session.Set("username", users.Username)
  54.                 session.Set("user_id", users.ID)
  55.                
  56.                 http.Redirect(w, r, "/", 302)
  57.             }
  58.         }
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement