1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-09-11 11:46:24 -07:00

Add option lister to manage endpoint

This commit is contained in:
comraderat 2020-05-22 18:06:15 +02:00
parent 9bb7b3f86c
commit ce1da78361
2 changed files with 30 additions and 12 deletions

View file

@ -22,9 +22,7 @@ func CallManageFunction(writer http.ResponseWriter, request *http.Request) {
action := request.FormValue("action")
staffRank := GetStaffRank(request)
var managePageBuffer bytes.Buffer
if action == "" {
action = "announcements"
} else if action == "postinfo" {
if action == "postinfo" {
writer.Header().Add("Content-Type", "application/json")
writer.Header().Add("Cache-Control", "max-age=5, must-revalidate")
}
@ -38,18 +36,22 @@ func CallManageFunction(writer http.ResponseWriter, request *http.Request) {
}
}
if _, ok := manageFunctions[action]; ok {
if staffRank >= manageFunctions[action].Permissions {
managePageBuffer.Write([]byte(manageFunctions[action].Callback(writer, request)))
} else if staffRank == 0 && manageFunctions[action].Permissions == 0 {
managePageBuffer.Write([]byte(manageFunctions[action].Callback(writer, request)))
} else if staffRank == 0 {
managePageBuffer.Write([]byte(manageFunctions["login"].Callback(writer, request)))
if action == "" {
managePageBuffer.Write([]byte(actionHTMLLinker(manageFunctions)))
} else {
if _, ok := manageFunctions[action]; ok {
if staffRank >= manageFunctions[action].Permissions {
managePageBuffer.Write([]byte(manageFunctions[action].Callback(writer, request)))
} else if staffRank == 0 && manageFunctions[action].Permissions == 0 {
managePageBuffer.Write([]byte(manageFunctions[action].Callback(writer, request)))
} else if staffRank == 0 {
managePageBuffer.Write([]byte(manageFunctions["login"].Callback(writer, request)))
} else {
managePageBuffer.Write([]byte(action + " is undefined."))
}
} else {
managePageBuffer.Write([]byte(action + " is undefined."))
}
} else {
managePageBuffer.Write([]byte(action + " is undefined."))
}
if action != "getstaffjquery" && action != "postinfo" {
managePageBuffer.Write([]byte("</body></html>"))

View file

@ -2,6 +2,7 @@ package manage
import (
"net/http"
"sort"
"time"
"github.com/gochan-org/gochan/pkg/gclog"
@ -86,3 +87,18 @@ func GetStaffRank(request *http.Request) int {
}
return staff.Rank
}
func actionHTMLLinker(funcMap map[string]ManageFunction) string {
var links = ""
var keys []string
for key := range funcMap {
if funcMap[key].Title != "" {
keys = append(keys, key)
}
}
sort.Strings(keys)
for _, key := range keys {
links += `<a href="manage?action=` + key + `">` + funcMap[key].Title + "</a></br>"
}
return links
}