mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
core: add check for problem.copy
This commit is contained in:
2 files changed
+5
-7
No files matched your search
@@ -208,6 +208,11 @@ export class ProblemMainHandler extends Handler {
|
|||||||
if (!ddoc) throw new NotFoundError(target);
|
if (!ddoc) throw new NotFoundError(target);
|
||||||
const dudoc = await user.getById(target, this.user._id);
|
const dudoc = await user.getById(target, this.user._id);
|
||||||
if (!dudoc.hasPerm(PERM.PERM_CREATE_PROBLEM)) throw new PermissionError(PERM.PERM_CREATE_PROBLEM);
|
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 = [];
|
const ids = [];
|
||||||
for (const pid of pids) {
|
for (const pid of pids) {
|
||||||
// eslint-disable-next-line no-await-in-loop
|
// eslint-disable-next-line no-await-in-loop
|
||||||
|
|||||||
@@ -396,13 +396,6 @@ export class ProblemModel {
|
|||||||
return indexByDocIdOnly ? r : Object.assign(r, l);
|
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[]) {
|
static async getListStatus(domainId: string, uid: number, pids: number[]) {
|
||||||
const psdocs = await ProblemModel.getMultiStatus(
|
const psdocs = await ProblemModel.getMultiStatus(
|
||||||
domainId, { uid, docId: { $in: Array.from(new Set(pids)) } },
|
domainId, { uid, docId: { $in: Array.from(new Set(pids)) } },
|
||||||
|
|||||||
Reference in new issue
Block a user