package router import ( "janex/admin-dashboard-backend/modules/database" "janex/admin-dashboard-backend/modules/structs" "janex/admin-dashboard-backend/modules/utils" "janex/admin-dashboard-backend/routers/router/api/v1/jxscanner" "janex/admin-dashboard-backend/routers/router/api/v1/user" "github.com/gofiber/fiber/v2" ) func SetupRoutes(app *fiber.App) { v1 := app.Group("/v1") u := v1.Group("/user") u.Post("/auth/login", user.UserLogin) u.Delete("/auth/logout", user.UserLogout) u.Delete("/session/:idForDeletion", userSessionValidation, user.SignOutSession) u.Post("/avatar", userSessionValidation, user.UpdateAvatar) s := v1.Group("/scanner") s.Post("/", jxscanner.AddScanner) s.Post("/scan", scannerSessionValidation, jxscanner.ScanResult) s.Delete("/", scannerSessionValidation, jxscanner.DeleteScanner) s.Patch("/:scannerId", userSessionValidation, jxscanner.UpdateScannerUsedByUserId) app.Static("/", "./public") } func userSessionValidation(c *fiber.Ctx) error { xAuthorization := utils.GetXAuhorizationHeader(c) if len(xAuthorization) != utils.LenHeaderXAuthorization { return fiber.ErrUnauthorized } var userSession structs.UserSession database.DB.First(&userSession, "id = ?", xAuthorization) if len(userSession.Id) != utils.LenHeaderXAuthorization { return fiber.ErrUnauthorized } c.Locals("userId", userSession.UserId) return c.Next() } func scannerSessionValidation(c *fiber.Ctx) error { xAuthorization := utils.GetXAuhorizationHeader(c) if len(xAuthorization) != utils.LenHeaderXAuthorization { return fiber.ErrUnauthorized } var scanner structs.Scanner database.DB.First(&scanner, "session = ?", xAuthorization) if len(scanner.Session) != utils.LenHeaderXAuthorization { return fiber.ErrUnauthorized } c.Locals("scannerId", scanner.Id) c.Locals("usedByUserId", scanner.UsedByUserId) return c.Next() }