diff --git a/app/http/endpoints/api/ticket/getticket.go b/app/http/endpoints/api/ticket/getticket.go index dff8c1a..3172ca6 100644 --- a/app/http/endpoints/api/ticket/getticket.go +++ b/app/http/endpoints/api/ticket/getticket.go @@ -17,6 +17,7 @@ var MentionRegex, _ = regexp.Compile("<@(\\d+)>") func GetTicket(ctx *gin.Context) { guildId := ctx.Keys["guildid"].(uint64) + userId := ctx.Keys["userid"].(uint64) botContext, err := botcontext.ContextForGuild(guildId) if err != nil { @@ -62,6 +63,17 @@ func GetTicket(ctx *gin.Context) { return } + hasPermission, err := utils.HasPermissionToViewTicket(guildId, userId, ticket) + if err != nil { + ctx.JSON(500, utils.ErrorJson(err)) + return + } + + if !hasPermission { + ctx.JSON(403, utils.ErrorStr("You do not have permission to view this ticket")) + return + } + messagesFormatted := make([]map[string]interface{}, 0) if ticket.ChannelId != nil { // Get messages diff --git a/app/http/endpoints/api/transcripts/get.go b/app/http/endpoints/api/transcripts/get.go index b22705b..792341a 100644 --- a/app/http/endpoints/api/transcripts/get.go +++ b/app/http/endpoints/api/transcripts/get.go @@ -2,10 +2,9 @@ package api import ( "errors" - "github.com/TicketsBot/GoPanel/database" + dbclient "github.com/TicketsBot/GoPanel/database" "github.com/TicketsBot/GoPanel/utils" "github.com/TicketsBot/archiverclient" - "github.com/TicketsBot/common/permission" "github.com/gin-gonic/gin" "strconv" ) @@ -22,7 +21,7 @@ func GetTranscriptHandler(ctx *gin.Context) { } // get ticket object - ticket, err := database.Client.Tickets.Get(ticketId, guildId) + ticket, err := dbclient.Client.Tickets.Get(ticketId, guildId) if err != nil { ctx.AbortWithStatusJSON(500, gin.H{ "success": false, @@ -40,13 +39,13 @@ func GetTranscriptHandler(ctx *gin.Context) { // Verify the user has permissions to be here // ticket.UserId cannot be 0 if ticket.UserId != userId { - permLevel, err := utils.GetPermissionLevel(guildId, userId) + hasPermission, err := utils.HasPermissionToViewTicket(guildId, userId, ticket) if err != nil { ctx.JSON(500, utils.ErrorJson(err)) return } - if permLevel < permission.Support { + if !hasPermission { ctx.JSON(403, utils.ErrorStr("You do not have permission to view this transcript")) return } diff --git a/app/http/server.go b/app/http/server.go index 5d12554..970750f 100644 --- a/app/http/server.go +++ b/app/http/server.go @@ -77,14 +77,16 @@ func StartServer() { middleware.Logging, ) - guildAuthApiAdmin.GET("/settings", api_settings.GetSettingsHandler) + // Must be readable to load transcripts page + guildAuthApiSupport.GET("/settings", api_settings.GetSettingsHandler) guildAuthApiAdmin.POST("/settings", api_settings.UpdateSettingsHandler) guildAuthApiSupport.GET("/blacklist", api_blacklist.GetBlacklistHandler) guildAuthApiSupport.POST("/blacklist/:user", api_blacklist.AddBlacklistHandler) guildAuthApiSupport.DELETE("/blacklist/:user", api_blacklist.RemoveBlacklistHandler) - guildAuthApiAdmin.GET("/panels", api_panels.ListPanels) + // Must be readable to load transcripts page + guildAuthApiSupport.GET("/panels", api_panels.ListPanels) guildAuthApiAdmin.POST("/panels", api_panels.CreatePanel) guildAuthApiAdmin.POST("/panels/:panelid", rl(middleware.RateLimitTypeGuild, 5, 5*time.Second), api_panels.ResendPanel) guildAuthApiAdmin.PATCH("/panels/:panelid", api_panels.UpdatePanel) diff --git a/frontend/src/components/manage/PanelCreationForm.svelte b/frontend/src/components/manage/PanelCreationForm.svelte index ed01193..cccd914 100644 --- a/frontend/src/components/manage/PanelCreationForm.svelte +++ b/frontend/src/components/manage/PanelCreationForm.svelte @@ -1,62 +1,64 @@
-
-
- -
-
+
+
+ +
+