Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package controllers
- import (
- "database/sql"
- "net/http"
- "../models"
- sessions "github.com/kataras/go-sessions"
- "golang.org/x/crypto/bcrypt"
- )
- var db *sql.DB
- func Register(w http.ResponseWriter, r *http.Request) {
- if r.Method != "POST" {
- var data = map[string]interface{}{
- "Title": "Register",
- }
- err := templates.ExecuteTemplate(w, "register.html", data)
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- }
- return
- }
- username := r.FormValue("username")
- nickname := r.FormValue("nickname")
- email := r.FormValue("email")
- password := r.FormValue("password")
- users := models.QueryUser(username)
- if (models.User{}) == users {
- hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
- if len(hashedPassword) != 0 && checkErr(w, r, err) {
- stmt, err := db.Prepare("INSERT INTO users SET username=?, nickname=?, email=?, password=?")
- if err == nil {
- _, err := stmt.Exec(&username, &nickname, &email, &hashedPassword)
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
- users := models.QueryUser(username)
- session := sessions.Start(w, r)
- session.Set("username", users.Username)
- session.Set("user_id", users.ID)
- http.Redirect(w, r, "/", 302)
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement