From b059fa25cba59d7961a8c39818444bde095f60d1 Mon Sep 17 00:00:00 2001 From: Dennis Schoepf Date: Sun, 28 Apr 2024 19:14:30 +0200 Subject: [PATCH] Removes external api package --- api/api.go | 45 ------------------------------------------ api/auth.go | 56 ----------------------------------------------------- 2 files changed, 101 deletions(-) delete mode 100644 api/api.go delete mode 100644 api/auth.go diff --git a/api/api.go b/api/api.go deleted file mode 100644 index a8076bd..0000000 --- a/api/api.go +++ /dev/null @@ -1,45 +0,0 @@ -package api - -import ( - "errors" - "freed/database" - "os" - - "github.com/gofiber/fiber/v2" - "github.com/gofiber/fiber/v2/middleware/keyauth" -) - -type Handlers struct { - Repo *database.Repository -} - -func NewHandlers(repo *database.Repository) *Handlers { - return &Handlers{Repo: repo} -} - -func Setup(app *fiber.App, repository *database.Repository) error { - apiKey := os.Getenv("API_KEY") - - if apiKey == "" { - return errors.New("Could not read API_KEY from ENV file.") - } - - api := app.Group("/api", keyauth.New(keyauth.Config{ - SuccessHandler: successHandler, - ErrorHandler: errHandler, - KeyLookup: "header:x-api-key", - ContextKey: "apiKey", - Validator: apiKeyValidator(apiKey), - })) - - handlers := NewHandlers(repository) - - v1 := api.Group("/v1") - v1.Get("/users", handlers.FetchAllUsersHandler) - - return nil -} - -func (h *Handlers) FetchAllUsersHandler(ctx *fiber.Ctx) error { - return ctx.JSON(&fiber.Map{"users": "none"}) -} diff --git a/api/auth.go b/api/auth.go deleted file mode 100644 index b8221f8..0000000 --- a/api/auth.go +++ /dev/null @@ -1,56 +0,0 @@ -package api - -import ( - "crypto/sha256" - "crypto/subtle" - "regexp" - "strings" - - "github.com/gofiber/fiber/v2" - "github.com/gofiber/fiber/v2/middleware/keyauth" -) - -var ( - apiKey = "willbechanged" - protectedURLs = []*regexp.Regexp{ - regexp.MustCompile("^/api$"), - } - errForbidden = &fiber.Error{ - Code: 403, - Message: "API Key is missing or invalid", - } -) - -func apiKeyValidator(apiKey string) func(*fiber.Ctx, string) (bool, error) { - return func(_ *fiber.Ctx, key string) (bool, error) { - hashedAPIKey := sha256.Sum256([]byte(apiKey)) - hashedKey := sha256.Sum256([]byte(key)) - - if subtle.ConstantTimeCompare(hashedAPIKey[:], hashedKey[:]) == 1 { - return true, nil - } - - return false, keyauth.ErrMissingOrMalformedAPIKey - } -} - -func protectedRoutesFilter(ctx *fiber.Ctx) bool { - originalURL := strings.ToLower(ctx.OriginalURL()) - - for _, pattern := range protectedURLs { - if pattern.MatchString(originalURL) { - return false - } - } - return true -} - -func successHandler(ctx *fiber.Ctx) error { - return ctx.Next() -} - -func errHandler(ctx *fiber.Ctx, err error) error { - ctx.Status(fiber.StatusForbidden) - - return ctx.JSON(errForbidden) -}