aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/middleware.go7
-rw-r--r--src/server/router.go15
-rw-r--r--src/server/server.go32
-rw-r--r--src/server/session.go9
4 files changed, 24 insertions, 39 deletions
diff --git a/src/server/middleware.go b/src/server/middleware.go
new file mode 100644
index 0000000..7b5b58b
--- /dev/null
+++ b/src/server/middleware.go
@@ -0,0 +1,7 @@
+package server
+
+import "net/http"
+
+func NewMiddlewares(middlewares ...func(http.Handler) http.Handler) []func(http.Handler) http.Handler {
+ return middlewares
+}
diff --git a/src/server/router.go b/src/server/router.go
index c8ca0fa..6b33a7d 100644
--- a/src/server/router.go
+++ b/src/server/router.go
@@ -6,18 +6,18 @@ import (
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
"gitlab.com/alexkavon/newsstand/src/conf"
+ "gitlab.com/alexkavon/newsstand/src/sessions"
)
type HandlerFunc func(s *Server) http.HandlerFunc
type Route struct {
- Name string
- Method string
- Path string
- AuthRequired bool
- HandlerFunc HandlerFunc
- UiPageName string
- UiTemplateName string
+ Name string
+ Method string
+ Path string
+ AuthRequired bool
+ HandlerFunc HandlerFunc
+ Middlewares []func(http.Handler) http.Handler
}
type Routes []Route
@@ -25,5 +25,6 @@ type Routes []Route
func NewRouter(config *conf.Conf) *chi.Mux {
r := chi.NewRouter()
r.Use(middleware.Logger)
+ r.Use(sessions.SetSession)
return r
}
diff --git a/src/server/server.go b/src/server/server.go
index c483069..eb5f785 100644
--- a/src/server/server.go
+++ b/src/server/server.go
@@ -4,26 +4,23 @@ import (
"net/http"
"github.com/go-chi/chi/v5"
- "github.com/google/uuid"
"gitlab.com/alexkavon/newsstand/src/conf"
"gitlab.com/alexkavon/newsstand/src/db"
)
type Server struct {
- Router *chi.Mux
- Db *db.Database
- Config *conf.Conf
- Ui Ui
- Sessions map[string]session
+ Router *chi.Mux
+ Db *db.Database
+ Config *conf.Conf
+ Ui Ui
}
func NewServer(config *conf.Conf, database *db.Database) *Server {
return &Server{
- Router: NewRouter(config),
- Db: database,
- Config: config,
- Ui: NewUi(config),
- Sessions: map[string]session{},
+ Router: NewRouter(config),
+ Db: database,
+ Config: config,
+ Ui: NewUi(config),
}
}
@@ -33,6 +30,7 @@ func (s *Server) BuildUi() {
func (s *Server) RegisterRoutes(routes Routes) {
for _, r := range routes {
+ s.Router.Use(r.Middlewares...)
s.Router.Method(r.Method, r.Path, r.HandlerFunc(s))
}
}
@@ -40,15 +38,3 @@ func (s *Server) RegisterRoutes(routes Routes) {
func (s *Server) Serve() {
http.ListenAndServe(":"+s.Config.Server.Port, s.Router)
}
-
-func (s *Server) NewSession(w http.ResponseWriter, username string) {
- token := uuid.NewString()
- s.Sessions[token] = session{
- username: username,
- }
-
- http.SetCookie(w, &http.Cookie{
- Name: "session_token",
- Value: token,
- })
-}
diff --git a/src/server/session.go b/src/server/session.go
deleted file mode 100644
index 3a12215..0000000
--- a/src/server/session.go
+++ /dev/null
@@ -1,9 +0,0 @@
-package server
-
-type session struct {
- username string
-}
-
-func (s *session) Username() string {
- return s.username
-}