From 26952fc455c8a2cfe8e78ae653185950fc392cc4 Mon Sep 17 00:00:00 2001 From: Dot-Rar Date: Fri, 1 Nov 2019 12:55:51 +0000 Subject: [PATCH] usercanclose --- app/http/endpoints/manage/settings.go | 12 +++++++++++ database/table/userscanclose.go | 27 ++++++++++++++++++++++++ public/templates/views/settings.mustache | 13 ++++++++++-- 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 database/table/userscanclose.go diff --git a/app/http/endpoints/manage/settings.go b/app/http/endpoints/manage/settings.go index 0ffb613..c8caeef 100644 --- a/app/http/endpoints/manage/settings.go +++ b/app/http/endpoints/manage/settings.go @@ -243,6 +243,17 @@ func SettingsHandler(ctx *gin.Context) { go table.UpdatePanelSettings(guildId, panelTitle, panelContent, int(panelColour)) } + // Users can close + usersCanCloseChan := make(chan bool) + go table.IsUserCanClose(guildId, usersCanCloseChan) + usersCanClose := <-usersCanCloseChan + + usersCanCloseStr := ctx.Query("userscanclose") + if csrfCorrect { + usersCanClose = usersCanCloseStr == "on" + table.SetUserCanClose(guildId, usersCanClose) + } + utils.Respond(ctx, template.TemplateSettings.Render(map[string]interface{}{ "name": store.Get("name").(string), "guildId": guildIdStr, @@ -260,6 +271,7 @@ func SettingsHandler(ctx *gin.Context) { "paneltitle": panelTitle, "panelcontent": panelContent, "panelcolour": strconv.FormatInt(int64(panelColour), 16), + "usersCanClose": usersCanClose, })) } else { ctx.Redirect(302, "/login") diff --git a/database/table/userscanclose.go b/database/table/userscanclose.go new file mode 100644 index 0000000..69da800 --- /dev/null +++ b/database/table/userscanclose.go @@ -0,0 +1,27 @@ +package table + +import "github.com/TicketsBot/GoPanel/database" + +type UserCanClose struct { + Guild int64 `gorm:"column:GUILDID;unique;primary_key"` + CanClose *bool `gorm:"column:CANCLOSE"` +} + +func (UserCanClose) TableName() string { + return "usercanclose" +} + +func IsUserCanClose(guild int64, ch chan bool) { + var node UserCanClose + database.Database.Where(UserCanClose{Guild: guild}).First(&node) + + if node.CanClose == nil { + ch <- true + } else { + ch <- *node.CanClose + } +} + +func SetUserCanClose(guild int64, value bool) { + database.Database.Where(&UserCanClose{Guild: guild}).Assign(&UserCanClose{CanClose: &value}).FirstOrCreate(&UserCanClose{}) +} diff --git a/public/templates/views/settings.mustache b/public/templates/views/settings.mustache index 9bc8196..03429f3 100644 --- a/public/templates/views/settings.mustache +++ b/public/templates/views/settings.mustache @@ -42,7 +42,7 @@
-
+
@@ -56,7 +56,7 @@
-
+
+ +
+
+ +
+ +
+
+