From f659859d661f5f201a045eb52df3964f7fc45847 Mon Sep 17 00:00:00 2001 From: Astra Date: Sun, 4 Oct 2026 22:16:42 +0100 Subject: [PATCH] No Verified tags on the public site The public scoreboard and player pages no longer show or receive whether a player is verified. The staff panel still does. --- README.md | 6 +++--- internal/web/assets/public.js | 6 +++--- internal/web/public.go | 12 +++++------- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 011311a..89d58a4 100644 --- a/README.md +++ b/README.md @@ -125,9 +125,9 @@ verified players perks. It keeps everything in SimpleAdmin's database (`gv_verif it to the ranks that should have it in the rank editor), staff give overrides for a day up to a year or with no expiry, change them and remove them. Root sets the group and turns verification on and off. -- **Everyone** sees a "Verified" tag on the scoreboard and on player pages, but only while - verification is on (enabled, with a group set) and GroupVerify isn't missing from the server's - plugin list. The public site never shows why someone is verified, or who gave an override. +- **The public site** shows nothing about verification. On the staff panel, the Overview + scoreboard shows a "Verified" tag only while verification is on (enabled, with a group set) and + GroupVerify isn't missing from the server's plugin list. - **Clan tag**: Root can set the scoreboard tag verified players without a rank get (GroupVerify's `clan_tag`, at most 12 characters). CS2-Tags (1.0.4c-zio6+) applies it, and gives unverified players without a rank no tag at all. Blank turns it off. diff --git a/internal/web/assets/public.js b/internal/web/assets/public.js index fb41c60..cdd6085 100644 --- a/internal/web/assets/public.js +++ b/internal/web/assets/public.js @@ -42,7 +42,7 @@ async function server() { PlayerKillsDeathsPing ${list.map((p) => ` -
${esc(p.name)}${p.verified ? ` ${VERIFIED_TAG}` : ""}${p.bot ? 'Bot' : p.rank ? rankTag(p.rank) : ""}
+
${esc(p.name)}${p.bot ? 'Bot' : p.rank ? rankTag(p.rank) : ""}
${p.kills} ${p.deaths} ${p.bot ? "" : p.ping} @@ -243,8 +243,8 @@ async function openPlayer(sid) {

${esc(name)}

${esc(p.steamid)} · Steam profile${p.rank ? `
${rankTag(p.rank)}
` : ""}
- ${now.length || p.online || p.verified ? `
-
${p.verified ? VERIFIED_TAG : ""}${p.online ? 'On the server' : ""}${now.map((h) => `${h.kind === "ban" ? "Banned" : COMM_HELP[h.type]}${h.duration ? `, ${fmtLeft(served(h).left)}` : ", permanently"}`).join("")}
+ ${now.length || p.online ? `
+
${p.online ? 'On the server' : ""}${now.map((h) => `${h.kind === "ban" ? "Banned" : COMM_HELP[h.type]}${h.duration ? `, ${fmtLeft(served(h).left)}` : ", permanently"}`).join("")}
` : ""} ${ptDrawer(p.playtime, p.online)}
diff --git a/internal/web/public.go b/internal/web/public.go index 1ec507c..9f59245 100644 --- a/internal/web/public.go +++ b/internal/web/public.go @@ -38,7 +38,7 @@ func toPublic(ps []store.Penalty) []publicPenalty { type livePlayer struct { live.Player Rank *rankView `json:"rank,omitempty"` - // Verified by GroupVerify, when that's shown at all (see verifyInfo.Shown). + // Verified by GroupVerify, when that's shown at all (see verifyInfo.Shown). Staff overview only. Verified bool `json:"verified,omitempty"` // Staff-only fields, left empty on the public page. Tags []string `json:"tags,omitempty"` @@ -84,9 +84,8 @@ func (s *Server) publicServer(w http.ResponseWriter, r *http.Request) { internal(w, r, err) return } - view := s.serverView(x, s.poll.Current()) - s.markVerified(r.Context(), view.Players) - writeJSON(w, http.StatusOK, view) + // No Verified tags on the public scoreboard; the staff overview still marks them. + writeJSON(w, http.StatusOK, s.serverView(x, s.poll.Current())) } // penaltyQuery reads ?status=&q=&page= (and for comms, a type in place of the status). @@ -290,11 +289,10 @@ func (s *Server) publicPlayer(w http.ResponseWriter, r *http.Request) { return } _, online := s.poll.Current().Find(steamid) - // Only whether they're verified: why, and overrides' expiry and who gave them, are for staff. - st, verified := s.verifiedSet(r.Context(), []string{steamid})[steamid] + // No verification on the public site: that's on the staff panel. resp := map[string]any{ "steamid": steamid, "name": d.Name, "online": online, "rank": s.rankOf(x, steamid), - "verified": verified && st.Verified(), "bans": toPublic(bans), "comms": toPublic(comms), + "bans": toPublic(bans), "comms": toPublic(comms), } // Signed-in staff get the staff playtime figures here too, as on the staff panel. id, _, err := s.identity(r)