141 lines
3.5 KiB
Go
141 lines
3.5 KiB
Go
package table
|
|
|
|
import (
|
|
"github.com/TicketsBot/GoPanel/database"
|
|
"strconv"
|
|
)
|
|
|
|
type RolePermissions struct {
|
|
GuildId int64 `gorm:"column:GUILDID"`
|
|
RoleId int64 `gorm:"column:ROLEID"`
|
|
Support bool `gorm:"column:ISSUPPORT"`
|
|
Admin bool `gorm:"column:ISADMIN"`
|
|
}
|
|
|
|
func (RolePermissions) TableName() string {
|
|
return "role_permissions"
|
|
}
|
|
|
|
func IsSupportRole(guild string, role string, ch chan bool) {
|
|
guildId, err := strconv.ParseInt(guild, 10, 64); if err != nil {
|
|
ch <- false
|
|
return
|
|
}
|
|
|
|
rollId, err := strconv.ParseInt(role, 10, 64); if err != nil {
|
|
ch <- false
|
|
return
|
|
}
|
|
|
|
var node RolePermissions
|
|
database.Database.Where(RolePermissions{GuildId: guildId, RoleId: rollId}).First(&node)
|
|
ch <- node.Support
|
|
}
|
|
|
|
func IsAdminRole(guild string, role string, ch chan bool) {
|
|
guildId, err := strconv.ParseInt(guild, 10, 64); if err != nil {
|
|
ch <- false
|
|
return
|
|
}
|
|
|
|
rollId, err := strconv.ParseInt(role, 10, 64); if err != nil {
|
|
ch <- false
|
|
return
|
|
}
|
|
|
|
var node RolePermissions
|
|
database.Database.Where(RolePermissions{GuildId: guildId, RoleId: rollId}).First(&node)
|
|
ch <- node.Admin
|
|
}
|
|
|
|
func GetAdminRoles(guild string, ch chan []int64) {
|
|
guildId, err := strconv.ParseInt(guild, 10, 64); if err != nil {
|
|
ch <- []int64{}
|
|
return
|
|
}
|
|
|
|
var nodes []RolePermissions
|
|
database.Database.Where(RolePermissions{GuildId: guildId, Admin: true}).Find(&nodes)
|
|
|
|
ids := make([]int64, 0)
|
|
for _, node := range nodes {
|
|
ids = append(ids, node.RoleId)
|
|
}
|
|
|
|
ch <- ids
|
|
}
|
|
|
|
func GetSupportRoles(guild string, ch chan []int64) {
|
|
guildId, err := strconv.ParseInt(guild, 10, 64); if err != nil {
|
|
ch <- []int64{}
|
|
return
|
|
}
|
|
|
|
var nodes []RolePermissions
|
|
database.Database.Where(RolePermissions{GuildId: guildId, Support: true, Admin: false}).Find(&nodes)
|
|
|
|
ids := make([]int64, 0)
|
|
for _, node := range nodes {
|
|
ids = append(ids, node.RoleId)
|
|
}
|
|
|
|
ch <- ids
|
|
}
|
|
|
|
func AddAdminRole(guild string, role string) {
|
|
guildId, err := strconv.ParseInt(guild, 10, 64); if err != nil {
|
|
return
|
|
}
|
|
|
|
roleId, err := strconv.ParseInt(role, 10, 64); if err != nil {
|
|
return
|
|
}
|
|
|
|
var node RolePermissions
|
|
database.Database.Where(RolePermissions{GuildId: guildId, RoleId: roleId}).Assign(RolePermissions{Admin: true, Support: true}).FirstOrCreate(&node)
|
|
}
|
|
|
|
func AddSupportRole(guild string, role string) {
|
|
guildId, err := strconv.ParseInt(guild, 10, 64); if err != nil {
|
|
return
|
|
}
|
|
|
|
roleId, err := strconv.ParseInt(role, 10, 64); if err != nil {
|
|
return
|
|
}
|
|
|
|
var node RolePermissions
|
|
database.Database.Where(RolePermissions{GuildId: guildId, RoleId: roleId}).Assign(RolePermissions{Support: true}).FirstOrCreate(&node)
|
|
}
|
|
|
|
func RemoveAdminRole(guild string, role string) {
|
|
guildId, err := strconv.ParseInt(guild, 10, 64); if err != nil {
|
|
return
|
|
}
|
|
|
|
roleId, err := strconv.ParseInt(role, 10, 64); if err != nil {
|
|
return
|
|
}
|
|
|
|
var node RolePermissions
|
|
database.Database.Where(RolePermissions{GuildId: guildId, RoleId: roleId}).Take(&node)
|
|
database.Database.Model(&node).Where("GUILDID = ? AND ROLEID = ?", guildId, roleId).Update("ISADMIN", false)
|
|
}
|
|
|
|
func RemoveSupportRole(guild string, role string) {
|
|
guildId, err := strconv.ParseInt(guild, 10, 64); if err != nil {
|
|
return
|
|
}
|
|
|
|
roleId, err := strconv.ParseInt(role, 10, 64); if err != nil {
|
|
return
|
|
}
|
|
|
|
var node RolePermissions
|
|
database.Database.Where(RolePermissions{GuildId: guildId, RoleId: roleId}).Take(&node)
|
|
database.Database.Model(&node).Where("GUILDID = ? AND ROLEID = ?", guildId, roleId).Updates(map[string]interface{}{
|
|
"ISADMIN": false,
|
|
"ISSUPPORT": false,
|
|
})
|
|
}
|