feat: make secure request API
This commit is contained in:
parent
a7ffe420f9
commit
ea96066f55
|
@ -7,6 +7,9 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func AppRouter(app *fiber.App) {
|
func AppRouter(app *fiber.App) {
|
||||||
|
// # API Secure
|
||||||
|
app.Use(middleware.APIKeyMiddleware)
|
||||||
|
|
||||||
// # role
|
// # role
|
||||||
app.Get("/listrole", controllers.GetAllUserRoles)
|
app.Get("/listrole", controllers.GetAllUserRoles)
|
||||||
app.Get("/listrole/:id", controllers.GetUserRoleByID)
|
app.Get("/listrole/:id", controllers.GetUserRoleByID)
|
||||||
|
@ -51,7 +54,8 @@ func AppRouter(app *fiber.App) {
|
||||||
|
|
||||||
// # banner
|
// # banner
|
||||||
app.Get("/banners", controllers.GetBanners)
|
app.Get("/banners", controllers.GetBanners)
|
||||||
app.Get("/banners/:id", controllers.GetBannerByID)
|
app.Get("/banner/:id", controllers.GetBannerByID)
|
||||||
app.Post("/addbanners", controllers.CreateBanner)
|
app.Post("/addbanner", controllers.CreateBanner)
|
||||||
app.Put("/updatebanners/:id", controllers.UpdateBanner)
|
app.Put("/updatebanner/:id", controllers.UpdateBanner)
|
||||||
|
app.Delete("/deletebanner/:id", controllers.DeleteBanner)
|
||||||
}
|
}
|
||||||
|
|
|
@ -176,3 +176,31 @@ func UpdateBanner(c *fiber.Ctx) error {
|
||||||
},
|
},
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeleteBanner(c *fiber.Ctx) error {
|
||||||
|
id := c.Params("id")
|
||||||
|
|
||||||
|
err := services.DeleteBanner(id)
|
||||||
|
if err != nil {
|
||||||
|
|
||||||
|
if err.Error() == "banner not found" {
|
||||||
|
return c.Status(fiber.StatusNotFound).JSON(utils.FormatResponse(
|
||||||
|
fiber.StatusNotFound,
|
||||||
|
"Banner not found",
|
||||||
|
nil,
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.Status(fiber.StatusInternalServerError).JSON(utils.FormatResponse(
|
||||||
|
fiber.StatusInternalServerError,
|
||||||
|
"Failed to delete banner",
|
||||||
|
nil,
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.Status(fiber.StatusOK).JSON(utils.FormatResponse(
|
||||||
|
fiber.StatusOK,
|
||||||
|
"Banner deleted successfully",
|
||||||
|
nil,
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
package middleware
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/gofiber/fiber/v2"
|
||||||
|
"github.com/pahmiudahgede/senggoldong/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
func APIKeyMiddleware(c *fiber.Ctx) error {
|
||||||
|
|
||||||
|
apiKey := c.Get("x-api-key")
|
||||||
|
|
||||||
|
expectedAPIKey := os.Getenv("API_KEY")
|
||||||
|
|
||||||
|
if apiKey != expectedAPIKey {
|
||||||
|
|
||||||
|
response := utils.FormatResponse(
|
||||||
|
fiber.StatusUnauthorized,
|
||||||
|
"Invalid API Key",
|
||||||
|
nil,
|
||||||
|
)
|
||||||
|
|
||||||
|
return c.Status(fiber.StatusUnauthorized).JSON(response)
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.Next()
|
||||||
|
}
|
|
@ -35,4 +35,11 @@ func UpdateBanner(banner *domain.Banner) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func DeleteBanner(id string) error {
|
||||||
|
if err := config.DB.Where("id = ?", id).Delete(&domain.Banner{}).Error; err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
|
@ -49,3 +49,16 @@ func UpdateBanner(id, bannerName, bannerImage string) (domain.Banner, error) {
|
||||||
|
|
||||||
return banner, nil
|
return banner, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeleteBanner(id string) error {
|
||||||
|
|
||||||
|
_, err := repositories.GetBannerByID(id)
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("banner not found")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := repositories.DeleteBanner(id); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue