This commit is contained in:
Dot-Rar 2019-05-26 23:15:34 +01:00
parent 89a8438fb8
commit b9faad4175
7 changed files with 156 additions and 1 deletions

View File

@ -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,
}))
}
}

View File

@ -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), "name": store.Get("name").(string),
"guildId": guildIdStr, "guildId": guildIdStr,
"avatar": store.Get("avatar").(string), "avatar": store.Get("avatar").(string),

View File

@ -56,6 +56,9 @@ func StartServer() {
// /manage/:id/logs/view/:uuid // /manage/:id/logs/view/:uuid
router.GET("/manage/:id/logs/view/:uuid", manage.LogViewHandler) 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 { if err := router.Run(config.Conf.Server.Host); err != nil {
panic(err) panic(err)
} }

View File

@ -21,6 +21,7 @@ var (
TemplateIndex Template TemplateIndex Template
TemplateLogs Template TemplateLogs Template
TemplateSettings Template TemplateSettings Template
TemplateBlacklist Template
) )
func (t *Template) Render(context ...interface{}) string { func (t *Template) Render(context ...interface{}) string {
@ -49,6 +50,10 @@ func LoadTemplates() {
compiled: loadTemplate("settings"), compiled: loadTemplate("settings"),
Layout: LayoutManage, Layout: LayoutManage,
} }
TemplateBlacklist = Template{
compiled: loadTemplate("blacklist"),
Layout: LayoutManage,
}
} }
func loadLayout(name string) *mustache.Template { func loadLayout(name string) *mustache.Template {

View File

@ -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
}

View File

@ -109,6 +109,9 @@
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="/manage/{{guildId}}/logs/page/1">Logs</a> <a class="nav-link" href="/manage/{{guildId}}/logs/page/1">Logs</a>
</li> </li>
<li class="nav-item">
<a class="nav-link" href="/manage/{{guildId}}/blacklist">Blacklist</a>
</li>
</ul> </ul>
</div> </div>
</nav> </nav>

View File

@ -0,0 +1,37 @@
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header">
<h4 class="card-title">Blacklisted Users</h4>
</div>
<div class="card-body">
<div class="card-body table-responsive">
<table class="table table-hover table-striped">
<thead>
<tr>
<th>Ticket ID</th>
<th>Username</th>
<th>User ID</th>
<th>Log URL</th>
</tr>
</thead>
<tbody>
{{#blacklisted}}
<tr>
<td>{{ticketid}}</td>
<td>{{username}}</td>
<td>{{userid}}</td>
<td><a href="{{baseUrl}}/manage/{{guildId}}/logs/view/{{uuid}}">{{uuid}}</a></td>
</tr>
{{/blacklisted}}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>