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() && (
-
+ <>
+
+
+ >
)}