core: add check for problem.copy

This commit is contained in:
undefined committed 2024-08-10 23:15:22 +08:00
1 parent 41e3f59579
commit 21316fafaf
2 files changed
+5 -7

No files matched your search

+5
View File
@@ -208,6 +208,11 @@ export class ProblemMainHandler extends Handler {
if (!ddoc) throw new NotFoundError(target);
const dudoc = await user.getById(target, this.user._id);
if (!dudoc.hasPerm(PERM.PERM_CREATE_PROBLEM)) throw new PermissionError(PERM.PERM_CREATE_PROBLEM);
// Check if user can access all those problems
await problem.getList(
domainId, pids, this.user.hasPerm(PERM.PERM_VIEW_PROBLEM_HIDDEN) || this.user._id,
true, ['docId'], true,
);
const ids = [];
for (const pid of pids) {
// eslint-disable-next-line no-await-in-loop
-7
View File
@@ -396,13 +396,6 @@ export class ProblemModel {
return indexByDocIdOnly ? r : Object.assign(r, l);
}
static async getPrefixList(domainId: string, prefix: string) {
const $regex = new RegExp(`^${escapeRegExp(prefix.toLowerCase())}`, 'i');
const filter = { $or: [{ pid: { $regex } }, { title: { $regex } }] };
return await document.getMulti(domainId, document.TYPE_PROBLEM, filter, ['domainId', 'docId', 'pid', 'title'])
.limit(20).toArray();
}
static async getListStatus(domainId: string, uid: number, pids: number[]) {
const psdocs = await ProblemModel.getMultiStatus(
domainId, { uid, docId: { $in: Array.from(new Set(pids)) } },