admin-dashboard-backend/routers/router/router.go

68 lines
1.8 KiB
Go

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
}
return c.Next()
}