timetracker update

This commit is contained in:
Daniel Goc
2026-03-11 09:33:36 +01:00
parent bbf8a2c133
commit 9ef4bb219b
121 changed files with 4328 additions and 2231 deletions

View File

@@ -10,9 +10,11 @@ import (
"time"
"git.ma-al.com/goc_marek/timetracker/app/config"
"git.ma-al.com/goc_marek/timetracker/app/delivery/handler"
"git.ma-al.com/goc_marek/timetracker/app/delivery/middleware"
"git.ma-al.com/goc_marek/timetracker/app/delivery/web/public"
"git.ma-al.com/goc_marek/timetracker/app/delivery/web/api"
"git.ma-al.com/goc_marek/timetracker/app/delivery/web/api/public"
"git.ma-al.com/goc_marek/timetracker/app/delivery/web/api/restricted"
"git.ma-al.com/goc_marek/timetracker/app/delivery/web/general"
// "github.com/gofiber/fiber/v2/middleware/filesystem"
"github.com/gofiber/fiber/v3"
@@ -23,9 +25,11 @@ import (
// Server represents the web server
type Server struct {
app *fiber.App
cfg *config.Config
api fiber.Router
app *fiber.App
cfg *config.Config
api fiber.Router
public fiber.Router
restricted fiber.Router
}
// App returns the fiber app
@@ -61,54 +65,57 @@ func (s *Server) Setup() error {
s.app.Use(middleware.LanguageMiddleware())
// initialize healthcheck
public.InitHealth(s.App(), s.Cfg())
general.InitHealth(s.App(), s.Cfg())
// serve favicon
public.Favicon(s.app, s.cfg)
general.Favicon(s.app, s.cfg)
// initialize swagger endpoints
general.InitSwagger(s.App())
// API routes
s.api = s.app.Group("/api/v1")
s.public = s.api.Group("/public")
s.restricted = s.api.Group("/restricted")
s.restricted.Use(middleware.AuthMiddleware())
// initialize swagger endpoints
public.InitSwagger(s.App())
// initialize language endpoints (general)
api.NewLangHandler().InitLanguage(s.api, s.cfg)
// Settings endpoint (general)
api.NewSettingsHandler().InitSettings(s.api, s.cfg)
// Auth routes (public)
auth := s.api.Group("/auth")
handler.AuthHandlerRoutes(auth)
auth := s.public.Group("/auth")
public.AuthHandlerRoutes(auth)
// Repo routes (public)
repo := s.api.Group("/repo")
repo.Use(middleware.AuthMiddleware())
handler.RepoHandlerRoutes(repo)
// Repo routes (restricted)
repo := s.restricted.Group("/repo")
restricted.RepoHandlerRoutes(repo)
// Protected routes example
protected := s.api.Group("/restricted")
protected.Use(middleware.AuthMiddleware())
protected.Get("/dashboard", func(c fiber.Ctx) error {
user := middleware.GetUser(c)
return c.JSON(fiber.Map{
"message": "Welcome to the protected area",
"user": user,
})
})
// // Restricted routes example
// restricted := s.api.Group("/restricted")
// restricted.Use(middleware.AuthMiddleware())
// restricted.Get("/dashboard", func(c fiber.Ctx) error {
// user := middleware.GetUser(c)
// return c.JSON(fiber.Map{
// "message": "Welcome to the protected area",
// "user": user,
// })
// })
// Admin routes example
admin := s.api.Group("/admin")
admin.Use(middleware.AuthMiddleware())
admin.Use(middleware.RequireAdmin())
admin.Get("/users", func(c fiber.Ctx) error {
return c.JSON(fiber.Map{
"message": "Admin area - user management",
})
})
public.NewLangHandler().InitLanguage(s.api, s.cfg)
// Settings endpoint
public.NewSettingsHandler().InitSettings(s.api, s.cfg)
// // Admin routes example
// admin := s.api.Group("/admin")
// admin.Use(middleware.AuthMiddleware())
// admin.Use(middleware.RequireAdmin())
// admin.Get("/users", func(c fiber.Ctx) error {
// return c.JSON(fiber.Map{
// "message": "Admin area - user management",
// })
// })
// keep this at the end because its wilderange
public.InitBo(s.App())
general.InitBo(s.App())
return nil
}