diff --git a/pages/api/time/ranges/[id].js b/pages/api/time/ranges/[id].js index 36a540a..c03ee9d 100644 --- a/pages/api/time/ranges/[id].js +++ b/pages/api/time/ranges/[id].js @@ -2,10 +2,11 @@ import { deleteTimeRange, getLimit, authenticate, + updateUsername, updateUsernameWithLimit, } from "../../../../libs/db"; -import { addAPIQPS } from '../../../../libs/stats'; +import { addAPIQPS } from "../../../../libs/stats"; export default function handler(req, res) { addAPIQPS(); @@ -43,6 +44,16 @@ export default function handler(req, res) { return; } + // admin update username + const { token } = req.body; + if (authenticate(token)) { + updateUsername.run(username, id); + res.status(200).json({ + success: true, + }); + return; + } + try { const limit = getLimit(); updateUsernameWithLimit(username, id, limit); diff --git a/pages/time.js b/pages/time.js index c47f1aa..f4aa2db 100644 --- a/pages/time.js +++ b/pages/time.js @@ -34,6 +34,29 @@ export default function Time(props) { const router = useRouter(); + const updateUsernameByAdmin = (id, username) => { + fetch(`${prefix}/api/time/ranges/${id}`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + username, + token, + }), + }) + .then((res) => res.json()) + .then((res) => { + if (res.error) { + setSnackbarError(true); + setSnackbarErrorMessage(res.error); + } else { + setSnackbarSuccess(true); + refreshRanges(); + } + }); + }; + const getStats = () => { fetch(`${prefix}/api/stats`, { method: "GET", @@ -330,16 +353,21 @@ export default function Time(props) { {range.username ? range.username : "抢!"} {isAdmin() && ( - + <> + + + )}