diff options
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/middleware.go | 7 | ||||
| -rw-r--r-- | src/server/router.go | 15 | ||||
| -rw-r--r-- | src/server/server.go | 32 | ||||
| -rw-r--r-- | src/server/session.go | 9 |
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 -} |
