package admin import ( "Embalming_Girl_Server/db" "encoding/json" "fmt" "net/http" ) const AdminPassword = "admin123" func Register(mux *http.ServeMux, getStats func() map[string]interface{}) { mux.HandleFunc("/admin", func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/html; charset=utf-8") fmt.Fprint(w, adminHTML) }) mux.HandleFunc("/api/admin/login", func(w http.ResponseWriter, r *http.Request) { var req struct { Password string `json:"password"` } json.NewDecoder(r.Body).Decode(&req) if req.Password != AdminPassword { json.NewEncoder(w).Encode(map[string]interface{}{"ok": false}) return } json.NewEncoder(w).Encode(map[string]interface{}{"ok": true}) }) mux.HandleFunc("/api/admin/stats", func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(getStats()) }) mux.HandleFunc("/api/admin/users", func(w http.ResponseWriter, r *http.Request) { rows, err := db.DB.Query("SELECT id, username, nickname, bio, avatar, created_at, last_login FROM users ORDER BY id DESC") if err != nil { json.NewEncoder(w).Encode([]int{}) return } defer rows.Close() var users []map[string]interface{} for rows.Next() { var id int64 var username, nickname, bio, avatar string var created, login interface{} rows.Scan(&id, &username, &nickname, &bio, &avatar, &created, &login) users = append(users, map[string]interface{}{ "id": id, "username": username, "nickname": nickname, "bio": bio, "avatar": avatar, "created_at": created, "last_login": login, }) } w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(users) }) mux.HandleFunc("/api/admin/delete_user", func(w http.ResponseWriter, r *http.Request) { var req struct { ID int64 `json:"id"` } json.NewDecoder(r.Body).Decode(&req) db.DB.Exec("DELETE FROM sessions WHERE user_id=?", req.ID) db.DB.Exec("DELETE FROM users WHERE id=?", req.ID) json.NewEncoder(w).Encode(map[string]interface{}{"ok": true}) }) } const adminHTML = `管理面板

管理面板

Embalming Girl 管理面板

服务器状态

注册用户

ID用户名昵称头像简介注册时间操作
`