diff --git a/TODO.md b/TODO.md index 4d0cb07..6fdb8d0 100644 --- a/TODO.md +++ b/TODO.md @@ -28,6 +28,7 @@ ## Security - [x] Authentication System + - [ ] Persistant logins accross server restarts - [x] User login - [ ] User logout - [ ] Role-based access (admin, staff) diff --git a/main.go b/main.go index a7852dc..9db5c6c 100644 --- a/main.go +++ b/main.go @@ -10,21 +10,13 @@ import ( ) func main() { - var err error - var h router.Router - var a auth.Authenticator + h, err := router.New() + if err != nil { + log.Fatal(err) + } defer h.Close() - err = h.LoadTemplates() - if err != nil { - log.Fatal("can't parse templates: ", err) - } - - err = h.OenStore() - if err != nil { - log.Fatal("can't open the databse", err) - } - + var a auth.Authenticator a = auth.New() // #todo: make handler functions private, and create a servemux in router diff --git a/router/handler.go b/router/handler.go index c072d57..8fa0a96 100644 --- a/router/handler.go +++ b/router/handler.go @@ -22,19 +22,36 @@ func (h *Router) Close() { } } -func (h *Router) OenStore() error { +func (h *Router) openStore() error { var err error h.s, err = store.OpenStore("./foo.db") + if err != nil { + h.s.Close() + } return err } // #todo embed templates, and load them in init function -func (h *Router) LoadTemplates() error { +func (h *Router) loadTemplates() error { var err error h.tmpl, err = template.ParseFiles("index.html", "order.html") return err } +func New() (*Router, error) { + var router Router + var err error + err = router.loadTemplates() + if err != nil { + return nil, err + } + err = router.openStore() + if err != nil { + return nil, err + } + return &router, nil +} + func (h *Router) Form(w http.ResponseWriter, r *http.Request) { url := strings.Split(r.URL.String(), "/") o := store.Order{