73 lines
1.9 KiB
Go
73 lines
1.9 KiB
Go
// package controllers
|
|
|
|
// import (
|
|
// "errors"
|
|
// "net/http"
|
|
|
|
// "git.technical.kiwi/go/otfe/misc/cookie"
|
|
// "git.technical.kiwi/go/otfe/misc/helpers"
|
|
// "git.technical.kiwi/go/otfe/misc/rand"
|
|
// "git.technical.kiwi/go/otfe/models"
|
|
// )
|
|
|
|
// //Session controllers
|
|
// type Session struct{}
|
|
|
|
// type pageData struct {
|
|
// Title string
|
|
// Err string
|
|
// User models.User
|
|
// }
|
|
|
|
// //New login form
|
|
// func (s *Session) New(w http.ResponseWriter, r *http.Request) {
|
|
// var err error
|
|
// data := pageData{Title: "Login"}
|
|
// data.Err, err = cookie.Read(r, "error")
|
|
// if err == nil {
|
|
// cookie.Delete(w, "error")
|
|
// }
|
|
// t(w, data, "/static/login.gtpl")
|
|
// }
|
|
|
|
// //Create a new session
|
|
// func (s *Session) Create(w http.ResponseWriter, r *http.Request) {
|
|
// r.ParseForm()
|
|
// //Get email and password and check they are not empty
|
|
// email := r.Form.Get("email")
|
|
// password := r.Form.Get("password")
|
|
|
|
// //Check if user exists
|
|
// var user models.User
|
|
|
|
// //Check password is correct
|
|
// if user.Read("email", email) == nil &&
|
|
// helpers.CheckPasswordHash(password, user.Password) == nil {
|
|
// id, _ := rand.B64String(32)
|
|
// sess := models.Session{ID: id, UserID: user.ID}
|
|
// sess.Create()
|
|
// cookie.Create(w, "session", sess.ID)
|
|
// http.Redirect(w, r, "/", http.StatusFound)
|
|
// } else {
|
|
// loginFail(w, r, errors.New("Email or password incorrect"))
|
|
// }
|
|
// }
|
|
|
|
// //Delete session
|
|
// func (s *Session) Delete(w http.ResponseWriter, r *http.Request) {
|
|
// id, err := cookie.Read(r, "session")
|
|
// //Check user is logged in
|
|
// if err == nil {
|
|
// cookie.Delete(w, "session")
|
|
// var session models.Session
|
|
// session.Delete(id)
|
|
// http.Redirect(w, r, "/", http.StatusFound)
|
|
// }
|
|
|
|
// }
|
|
|
|
// func loginFail(w http.ResponseWriter, r *http.Request, err error) {
|
|
// cookie.Create(w, "error", err.Error())
|
|
// http.Redirect(w, r, "/login", http.StatusFound)
|
|
// }
|