From 88c8c691dd47a48735cf571f46116f2dc3916ac4 Mon Sep 17 00:00:00 2001 From: rxdn <29165304+rxdn@users.noreply.github.com> Date: Sat, 30 Oct 2021 14:06:49 +0100 Subject: [PATCH] Check support team data --- app/http/endpoints/api/ticket/getticket.go | 12 ++ app/http/endpoints/api/transcripts/get.go | 9 +- app/http/server.go | 6 +- .../manage/PanelCreationForm.svelte | 101 ++++++----- go.mod | 2 +- go.sum | 4 +- utils/permissionutils.go | 171 +++++++++++++++++- 7 files changed, 245 insertions(+), 60 deletions(-) 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 @@