From b9faad417548597a5b80677611532852df6413bf Mon Sep 17 00:00:00 2001 From: Dot-Rar Date: Sun, 26 May 2019 23:15:34 +0100 Subject: [PATCH] latest --- app/http/endpoints/manage/blacklist.go | 72 +++++++++++++++++++++++ app/http/endpoints/manage/logs.go | 2 +- app/http/server.go | 3 + app/http/template/template.go | 5 ++ database/table/blacklist.go | 35 +++++++++++ public/templates/layouts/manage.mustache | 3 + public/templates/views/blacklist.mustache | 37 ++++++++++++ 7 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 app/http/endpoints/manage/blacklist.go create mode 100644 database/table/blacklist.go create mode 100644 public/templates/views/blacklist.mustache diff --git a/app/http/endpoints/manage/blacklist.go b/app/http/endpoints/manage/blacklist.go new file mode 100644 index 0000000..28dfe7f --- /dev/null +++ b/app/http/endpoints/manage/blacklist.go @@ -0,0 +1,72 @@ +package manage + +import ( + "fmt" + "github.com/TicketsBot/GoPanel/app/http/template" + "github.com/TicketsBot/GoPanel/config" + "github.com/TicketsBot/GoPanel/database/table" + "github.com/TicketsBot/GoPanel/utils" + "github.com/TicketsBot/GoPanel/utils/discord/objects" + "github.com/gin-gonic/contrib/sessions" + "github.com/gin-gonic/gin" + "strconv" +) + +func BlacklistHandler(ctx *gin.Context) { + store := sessions.Default(ctx) + if store == nil { + return + } + defer store.Save() + + if utils.IsLoggedIn(store) { + userIdStr := store.Get("userid").(string) + userId, err := utils.GetUserId(store) + if err != nil { + ctx.String(500, err.Error()) + return + } + + // Verify the guild exists + guildIdStr := ctx.Param("id") + guildId, err := strconv.ParseInt(guildIdStr, 10, 64) + if err != nil { + ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page + return + } + + // Get object for selected guild + var guild objects.Guild + for _, g := range table.GetGuilds(userIdStr) { + if g.Id == guildIdStr { + guild = g + break + } + } + + // Verify the user has permissions to be here + if !guild.Owner && !table.IsAdmin(guildId, userId) { + ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 403 Page + return + } + + curid, err := strconv.ParseInt("210105426849562625", 10, 64) + table.RemoveBlacklist(guildId, curid) + fmt.Println(table.IsBlacklisted(guildId, curid)) + + //blacklistedUsers := table.GetBlacklistNodes(guildId) + //var blacklisted []map[string]interface{} + //for _, node := range blacklistedUsers { + + //} + + fmt.Println(len(guild.Members)) + + utils.Respond(ctx, template.TemplateBlacklist.Render(map[string]interface{}{ + "name": store.Get("name").(string), + "guildId": guildIdStr, + "avatar": store.Get("avatar").(string), + "baseUrl": config.Conf.Server.BaseUrl, + })) + } +} diff --git a/app/http/endpoints/manage/logs.go b/app/http/endpoints/manage/logs.go index 32ab29f..8e19944 100644 --- a/app/http/endpoints/manage/logs.go +++ b/app/http/endpoints/manage/logs.go @@ -95,7 +95,7 @@ func LogsHandler(ctx *gin.Context) { }) } - utils.Respond(ctx, template.TemplateLogs.Render(map[string]interface{}{ + utils.Respond(ctx, template.TemplateLogs.Render(map[string]interface{}{ "name": store.Get("name").(string), "guildId": guildIdStr, "avatar": store.Get("avatar").(string), diff --git a/app/http/server.go b/app/http/server.go index cdcf49b..5748aca 100644 --- a/app/http/server.go +++ b/app/http/server.go @@ -56,6 +56,9 @@ func StartServer() { // /manage/:id/logs/view/:uuid router.GET("/manage/:id/logs/view/:uuid", manage.LogViewHandler) + // /manage/:id/blacklist + router.GET("/manage/:id/blacklist", manage.BlacklistHandler) + if err := router.Run(config.Conf.Server.Host); err != nil { panic(err) } diff --git a/app/http/template/template.go b/app/http/template/template.go index 4d79bde..6da324e 100644 --- a/app/http/template/template.go +++ b/app/http/template/template.go @@ -21,6 +21,7 @@ var ( TemplateIndex Template TemplateLogs Template TemplateSettings Template + TemplateBlacklist Template ) func (t *Template) Render(context ...interface{}) string { @@ -49,6 +50,10 @@ func LoadTemplates() { compiled: loadTemplate("settings"), Layout: LayoutManage, } + TemplateBlacklist = Template{ + compiled: loadTemplate("blacklist"), + Layout: LayoutManage, + } } func loadLayout(name string) *mustache.Template { diff --git a/database/table/blacklist.go b/database/table/blacklist.go new file mode 100644 index 0000000..49285fe --- /dev/null +++ b/database/table/blacklist.go @@ -0,0 +1,35 @@ +package table + +import ( + "github.com/TicketsBot/GoPanel/database" +) + +type BlacklistNode struct { + Assoc int `gorm:"column:ASSOCID;type:int;primary_key;auto_increment"` + Guild int64 `gorm:"column:GUILDID"` + User int64 `gorm:"column:USERID"` +} + +func (BlacklistNode) TableName() string { + return "blacklist" +} + +func IsBlacklisted(guildId, userId int64) bool { + var count int + database.Database.Table("blacklist").Where(&BlacklistNode{Guild: guildId, User: userId}).Count(&count) + return count > 0 +} + +func AddBlacklist(guildId, userId int64) { + database.Database.Create(&BlacklistNode{Guild: guildId, User: userId}) +} + +func RemoveBlacklist(guildId, userId int64) { + database.Database.Delete(&BlacklistNode{Guild: guildId, User: userId}) +} + +func GetBlacklistNodes(guildId int64) []BlacklistNode { + var nodes []BlacklistNode + database.Database.Where(&BlacklistNode{Guild: guildId}).Find(&nodes) + return nodes +} diff --git a/public/templates/layouts/manage.mustache b/public/templates/layouts/manage.mustache index 9a8e7da..2bdeef9 100644 --- a/public/templates/layouts/manage.mustache +++ b/public/templates/layouts/manage.mustache @@ -109,6 +109,9 @@ + diff --git a/public/templates/views/blacklist.mustache b/public/templates/views/blacklist.mustache new file mode 100644 index 0000000..7499de3 --- /dev/null +++ b/public/templates/views/blacklist.mustache @@ -0,0 +1,37 @@ +
+
+
+
+
+
+

Blacklisted Users

+
+
+
+ + + + + + + + + + + {{#blacklisted}} + + + + + + + {{/blacklisted}} + +
Ticket IDUsernameUser IDLog URL
{{ticketid}}{{username}}{{userid}}{{uuid}}
+
+
+
+
+
+
+