diff --git a/cmd/web/handlers.go b/cmd/web/handlers.go index 6b27d11..e54a161 100644 --- a/cmd/web/handlers.go +++ b/cmd/web/handlers.go @@ -117,3 +117,23 @@ func (app *application) snippetCreatePost(w http.ResponseWriter, r *http.Request http.Redirect(w, r, fmt.Sprintf("/snippet/view/%d", id), http.StatusSeeOther) } + +func (app *application) userSignupPost(w http.ResponseWriter, r *http.Request) { + fmt.Fprintln(w, "Create a new user...") +} + +func (app *application) userLoginPost(w http.ResponseWriter, r *http.Request) { + fmt.Fprintln(w, "Login the user...") +} + +func (app *application) userLogoutPost(w http.ResponseWriter, r *http.Request) { + fmt.Fprintln(w, "Logout the user...") +} + +func (app *application) userSignup(w http.ResponseWriter, r *http.Request) { + fmt.Fprintln(w, "Display a HTML for signing up a new user...") +} + +func (app *application) userLogin(w http.ResponseWriter, r *http.Request) { + fmt.Fprintln(w, "Display a HTML for log in a user...") +} diff --git a/cmd/web/main.go b/cmd/web/main.go index 112d24a..48d024d 100644 --- a/cmd/web/main.go +++ b/cmd/web/main.go @@ -1,6 +1,7 @@ package main import ( + "crypto/tls" "database/sql" "flag" "html/template" @@ -67,10 +68,18 @@ func main() { sessionManager: sessionManager, } + tlsConfig := &tls.Config{ + CurvePreferences: []tls.CurveID{tls.X25519, tls.CurveP256}, // TODO: read about CurvePreferences + } + srv := &http.Server{ - Addr: cfg.addr, - ErrorLog: errorLog, - Handler: app.routes(), + Addr: cfg.addr, + ErrorLog: errorLog, + Handler: app.routes(), + TLSConfig: tlsConfig, + IdleTimeout: time.Minute, + ReadTimeout: 5 * time.Second, + WriteTimeout: 10 * time.Second, } infoLog.Printf("Starting server on %s", cfg.addr) diff --git a/cmd/web/routes.go b/cmd/web/routes.go index 4d88313..ef835ed 100644 --- a/cmd/web/routes.go +++ b/cmd/web/routes.go @@ -24,6 +24,12 @@ func (app *application) routes() http.Handler { router.Handler(http.MethodGet, "/snippet/create", dynamic.ThenFunc(app.snippetCreate)) router.Handler(http.MethodPost, "/snippet/create", dynamic.ThenFunc(app.snippetCreatePost)) + router.Handler(http.MethodGet, "/user/signup", dynamic.ThenFunc(app.userSignup)) + router.Handler(http.MethodPost, "/user/signup", dynamic.ThenFunc(app.userSignupPost)) + router.Handler(http.MethodGet, "/user/login", dynamic.ThenFunc(app.userLogin)) + router.Handler(http.MethodPost, "/user/login", dynamic.ThenFunc(app.userLoginPost)) + router.Handler(http.MethodPost, "/user/logout", dynamic.ThenFunc(app.userLogoutPost)) + standard := alice.New(app.recoverPanic, app.logRequest, secureHeaders) return standard.Then(router) } diff --git a/ui/html/partials/nav.tmpl b/ui/html/partials/nav.tmpl index de6ebf0..a5250c4 100644 --- a/ui/html/partials/nav.tmpl +++ b/ui/html/partials/nav.tmpl @@ -1,6 +1,15 @@ {{define "nav"}} {{end}} \ No newline at end of file