1
1
mirror of https://github.com/ZeroCatDev/ClassworksKV.git synced 2026-02-04 07:44:40 +00:00

Compare commits

...

2 Commits

Author SHA1 Message Date
Sunwuyuan
fddaf0dffd
1.3.9 2026-01-11 17:14:09 +08:00
Sunwuyuan
31aac06f3f
feat: 更新OAuth提供者的URL,添加设置教师名称的API接口,修改Socket信息字段 2026-01-11 15:37:45 +08:00
5 changed files with 55 additions and 7 deletions

View File

@ -18,9 +18,9 @@ export const oauthProviders = {
zerocat: { zerocat: {
clientId: process.env.ZEROCAT_CLIENT_ID, clientId: process.env.ZEROCAT_CLIENT_ID,
clientSecret: process.env.ZEROCAT_CLIENT_SECRET, clientSecret: process.env.ZEROCAT_CLIENT_SECRET,
authorizationURL: "https://zerocat-api.houlangs.com/oauth/authorize", authorizationURL: "https://zerocat-api.houlang.cloud/oauth/authorize",
tokenURL: "https://zerocat-api.houlangs.com/oauth/token", tokenURL: "https://zerocat-api.houlang.cloud/oauth/token",
userInfoURL: "https://zerocat-api.houlangs.com/oauth/userinfo", userInfoURL: "https://zerocat-api.houlang.cloud/oauth/userinfo",
scope: "user:basic user:email", scope: "user:basic user:email",
// 展示相关 // 展示相关
name: "ZeroCat", name: "ZeroCat",

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "ClassworksKV", "name": "ClassworksKV",
"version": "1.3.8", "version": "1.3.9",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "ClassworksKV", "name": "ClassworksKV",
"version": "1.3.8", "version": "1.3.9",
"dependencies": { "dependencies": {
"@opentelemetry/auto-instrumentations-node": "^0.59.0", "@opentelemetry/auto-instrumentations-node": "^0.59.0",
"@opentelemetry/exporter-trace-otlp-proto": "^0.205.0", "@opentelemetry/exporter-trace-otlp-proto": "^0.205.0",

View File

@ -1,6 +1,6 @@
{ {
"name": "ClassworksKV", "name": "ClassworksKV",
"version": "1.3.8", "version": "1.3.9",
"private": true, "private": true,
"scripts": { "scripts": {
"start": "node ./bin/www", "start": "node ./bin/www",

View File

@ -338,6 +338,54 @@ router.post(
}) })
); );
/**
* POST /apps/tokens/:token/set-teacher-name
* 设置教师名称 (仅限教师类型的 token)
* Body: { name: string }
*/
router.post(
"/tokens/:token/set-teacher-name",
errors.catchAsync(async (req, res, next) => {
const {token} = req.params;
const {name} = req.body;
if (!name) {
return next(errors.createError(400, "需要提供教师名称"));
}
// 查找 token 对应的应用安装记录
const appInstall = await prisma.appInstall.findUnique({
where: {token},
include: {
device: true,
},
});
if (!appInstall) {
return next(errors.createError(404, "Token 不存在"));
}
// 验证 token 类型是否为 teacher
if (appInstall.deviceType !== 'teacher') {
return next(errors.createError(403, "只有教师类型的 token 可以使用此接口"));
}
// 更新 AppInstall 的 note 字段为教师名称
const updatedInstall = await prisma.appInstall.update({
where: {id: appInstall.id},
data: {note: name},
});
return res.json({
success: true,
token: updatedInstall.token,
name: updatedInstall.note,
deviceType: updatedInstall.deviceType,
updatedAt: updatedInstall.updatedAt,
});
})
);
/** /**
* PUT /apps/tokens/:token/note * PUT /apps/tokens/:token/note
* 更新令牌的备注信息 * 更新令牌的备注信息

View File

@ -245,7 +245,7 @@ export function initSocket(server) {
senderInfo: { senderInfo: {
appId: tokenInfo?.appId, appId: tokenInfo?.appId,
deviceType: tokenInfo?.deviceType, deviceType: tokenInfo?.deviceType,
deviceName: tokenInfo?.deviceName, deviceName: tokenInfo?.note,
isReadOnly: tokenInfo?.isReadOnly || false, isReadOnly: tokenInfo?.isReadOnly || false,
note: tokenInfo?.note note: tokenInfo?.note
} }