2702b745d5
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.
73 lines
1.7 KiB
Go
73 lines
1.7 KiB
Go
package main
|
|
import "strconv"
|
|
import "strings"
|
|
|
|
var settingLabels map[string]string
|
|
|
|
type OptionLabel struct
|
|
{
|
|
Label string
|
|
Value int
|
|
Selected bool
|
|
}
|
|
|
|
type Setting struct
|
|
{
|
|
Name string
|
|
Content string
|
|
Type string
|
|
Constraint string
|
|
}
|
|
|
|
func init() {
|
|
settingLabels = make(map[string]string)
|
|
settingLabels["activation_type"] = "Activate All,Email Activation,Admin Approval"
|
|
}
|
|
|
|
func parseSetting(sname string, scontent string, stype string, constraint string) string {
|
|
var err error
|
|
if stype == "bool" {
|
|
if scontent == "1" {
|
|
settings[sname] = true
|
|
} else {
|
|
settings[sname] = false
|
|
}
|
|
} else if stype == "int" {
|
|
settings[sname], err = strconv.Atoi(scontent)
|
|
if err != nil {
|
|
return "You were supposed to enter an integer x.x\nType mismatch in " + sname
|
|
}
|
|
} else if stype == "int64" {
|
|
settings[sname], err = strconv.ParseInt(scontent, 10, 64)
|
|
if err != nil {
|
|
return "You were supposed to enter an integer x.x\nType mismatch in " + sname
|
|
}
|
|
} else if stype == "list" {
|
|
cons := strings.Split(constraint,"-")
|
|
if len(cons) < 2 {
|
|
return "Invalid constraint! The second field wasn't set!"
|
|
}
|
|
|
|
con1, err := strconv.Atoi(cons[0])
|
|
if err != nil {
|
|
return "Invalid contraint! The constraint field wasn't an integer!"
|
|
}
|
|
con2, err := strconv.Atoi(cons[1])
|
|
if err != nil {
|
|
return "Invalid contraint! The constraint field wasn't an integer!"
|
|
}
|
|
|
|
value, err := strconv.Atoi(scontent)
|
|
if err != nil {
|
|
return "Only integers are allowed in this setting x.x\nType mismatch in " + sname
|
|
}
|
|
|
|
if value < con1 || value > con2 {
|
|
return "Only integers between a certain range are allowed in this setting"
|
|
}
|
|
settings[sname] = value
|
|
} else {
|
|
settings[sname] = scontent
|
|
}
|
|
return ""
|
|
} |