diff --git a/app/http/middleware/parseguildid.go b/app/http/middleware/parseguildid.go new file mode 100644 index 0000000..c0a6372 --- /dev/null +++ b/app/http/middleware/parseguildid.go @@ -0,0 +1,23 @@ +package middleware + +import ( + "github.com/TicketsBot/GoPanel/utils" + "github.com/gin-gonic/gin" + "strconv" +) + +func ParseGuildId(ctx *gin.Context) { + guildId, ok := ctx.Params.Get("id") + if !ok { + ctx.AbortWithStatusJSON(400, utils.ErrorStr("Missing guild ID")) + return + } + + parsed, err := strconv.ParseUint(guildId, 10, 64) + if err != nil { + ctx.AbortWithStatusJSON(400, utils.ErrorStr("Invalid guild ID")) + return + } + + ctx.Keys["guildid"] = parsed +} diff --git a/app/http/server.go b/app/http/server.go index 33064cd..030476b 100644 --- a/app/http/server.go +++ b/app/http/server.go @@ -54,7 +54,7 @@ func StartServer() { guildAuthApiAdmin := apiGroup.Group("/:id", middleware.AuthenticateGuild(true, permission.Admin)) guildAuthApiSupport := apiGroup.Group("/:id", middleware.AuthenticateGuild(true, permission.Support)) - guildAuthApiEveryone := apiGroup.Group("/:id", middleware.AuthenticateGuild(true, permission.Everyone)) + guildApiNoAuth := apiGroup.Group("/:id", middleware.ParseGuildId) { guildAuthApiSupport.GET("/channels", api.ChannelsHandler) guildAuthApiSupport.GET("/premium", api.PremiumHandler) @@ -81,7 +81,7 @@ func StartServer() { guildAuthApiSupport.GET("/transcripts", createLimiter(5, 5 * time.Second), createLimiter(20, time.Minute), api_transcripts.ListTranscripts) // Allow regular users to get their own transcripts, make sure you check perms inside - guildAuthApiEveryone.GET("/transcripts/:ticketId", createLimiter(10, 10 * time.Second), api_transcripts.GetTranscriptHandler) + guildApiNoAuth.GET("/transcripts/:ticketId", createLimiter(10, 10 * time.Second), api_transcripts.GetTranscriptHandler) guildAuthApiSupport.GET("/tickets", api_ticket.GetTickets) guildAuthApiSupport.GET("/tickets/:ticketId", api_ticket.GetTicket)