Added the EditUser, EditUserEmail, EditUserPassword, EditUserGroup, EditUserGroupSuperMod and EditUserGroupAdmin permissions. Allocations are now tracked in the benchmarks. The topics template is now tracked in the benchmarks. The entire topic, topics, forum and forums routes are now benchmarked. Initial attempts to benchmark the router have begun, I'll probably have a benchmark in a later commit without the fluff so that it's easier to see it's performance impact. Improved the security on some of the moderation routes. SettingLabel is now OptionLabel for easier reuse. Moved one of the inline queries into a prepared statement. Added the initial draft for the new router. Fixed a bug where you lose all of your guest permissions when your session is invalidated.
111 lines
1.9 KiB
Go
111 lines
1.9 KiB
Go
package main
|
|
import "fmt"
|
|
|
|
var GuestPerms Perms
|
|
var AllPerms Perms
|
|
|
|
type Group struct
|
|
{
|
|
ID int
|
|
Name string
|
|
Perms Perms
|
|
PermissionsText []byte
|
|
Is_Mod bool
|
|
Is_Admin bool
|
|
Is_Banned bool
|
|
Tag string
|
|
}
|
|
|
|
// Permission Structure: ActionComponent[Subcomponent]Flag
|
|
type Perms struct
|
|
{
|
|
// Global Permissions
|
|
BanUsers bool
|
|
ActivateUsers bool
|
|
EditUser bool
|
|
EditUserEmail bool
|
|
EditUserPassword bool
|
|
EditUserGroup bool
|
|
EditUserGroupSuperMod bool
|
|
EditUserGroupAdmin bool
|
|
ManageForums bool // This could be local, albeit limited for per-forum managers
|
|
EditSettings bool
|
|
ManagePlugins bool
|
|
ViewIPs bool
|
|
|
|
// Forum permissions
|
|
ViewTopic bool
|
|
CreateTopic bool
|
|
EditTopic bool
|
|
DeleteTopic bool
|
|
CreateReply bool
|
|
//CreateReplyToOwn bool
|
|
EditReply bool
|
|
//EditOwnReply bool
|
|
DeleteReply bool
|
|
PinTopic bool
|
|
CloseTopic bool
|
|
//CloseOwnTopic bool
|
|
|
|
ExtData interface{}
|
|
}
|
|
|
|
/* Inherit from group permissions for ones we don't have */
|
|
type ForumPerms struct
|
|
{
|
|
ViewTopic bool
|
|
CreateTopic bool
|
|
EditTopic bool
|
|
DeleteTopic bool
|
|
CreateReply bool
|
|
//CreateReplyToOwn bool
|
|
EditReply bool
|
|
//EditOwnReply bool
|
|
DeleteReply bool
|
|
PinTopic bool
|
|
CloseTopic bool
|
|
//CloseOwnTopic bool
|
|
|
|
ExtData map[string]bool
|
|
}
|
|
|
|
func init() {
|
|
GuestPerms = Perms{
|
|
ViewTopic: true,
|
|
ExtData: make(map[string]bool),
|
|
}
|
|
|
|
AllPerms = Perms{
|
|
BanUsers: true,
|
|
ActivateUsers: true,
|
|
EditUser: true,
|
|
EditUserEmail: true,
|
|
EditUserPassword: true,
|
|
EditUserGroup: true,
|
|
EditUserGroupSuperMod: true,
|
|
EditUserGroupAdmin: true,
|
|
ManageForums: true,
|
|
EditSettings: true,
|
|
ManagePlugins: true,
|
|
ViewIPs: true,
|
|
|
|
ViewTopic: true,
|
|
CreateTopic: true,
|
|
EditTopic: true,
|
|
DeleteTopic: true,
|
|
CreateReply: true,
|
|
EditReply: true,
|
|
DeleteReply: true,
|
|
PinTopic: true,
|
|
CloseTopic: true,
|
|
|
|
ExtData: make(map[string]bool),
|
|
}
|
|
|
|
if debug {
|
|
fmt.Printf("Guest Perms: ")
|
|
fmt.Printf("%+v\n", GuestPerms)
|
|
fmt.Printf("All Perms: ")
|
|
fmt.Printf("%+v\n", AllPerms)
|
|
}
|
|
} |