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 @@
Logs
+
+ Blacklist
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+ Ticket ID |
+ Username |
+ User ID |
+ Log URL |
+
+
+
+ {{#blacklisted}}
+
+ {{ticketid}} |
+ {{username}} |
+ {{userid}} |
+ {{uuid}} |
+
+ {{/blacklisted}}
+
+
+
+
+
+
+
+
+