mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-17 17:36:08 +08:00
core: contest: fix permission control
This commit is contained in:
2 files changed
+20
-2
No files matched your search
@@ -78,7 +78,16 @@ export class ContestListHandler extends Handler {
|
||||
if (rule && contest.RULES[rule].hidden) throw new BadRequestError();
|
||||
const rules = Object.keys(contest.RULES).filter((i) => !contest.RULES[i].hidden);
|
||||
const q = {
|
||||
...this.user.hasPerm(PERM.PERM_VIEW_HIDDEN_CONTEST) ? {} : { $or: [{ assign: { $in: this.user.group } }, { assign: { $size: 0 } }] },
|
||||
...this.user.hasPerm(PERM.PERM_VIEW_HIDDEN_CONTEST)
|
||||
? {}
|
||||
: {
|
||||
$or: [
|
||||
{ maintainer: this.user._id },
|
||||
{ owner: this.user._id },
|
||||
{ assign: { $in: this.user.group } },
|
||||
{ assign: { $size: 0 } },
|
||||
],
|
||||
},
|
||||
...rule ? { rule } : { rule: { $in: rules } },
|
||||
};
|
||||
const cursor = contest.getMulti(domainId, q);
|
||||
|
||||
@@ -25,7 +25,16 @@ class HomeworkMainHandler extends Handler {
|
||||
async get(domainId: string, page = 1) {
|
||||
const cursor = contest.getMulti(domainId, {
|
||||
rule: 'homework',
|
||||
...this.user.hasPerm(PERM.PERM_VIEW_HIDDEN_HOMEWORK) ? {} : { $or: [{ assign: { $in: this.user.group } }, { assign: { $size: 0 } }] },
|
||||
...this.user.hasPerm(PERM.PERM_VIEW_HIDDEN_HOMEWORK)
|
||||
? {}
|
||||
: {
|
||||
$or: [
|
||||
{ maintainer: this.user._id },
|
||||
{ owner: this.user._id },
|
||||
{ assign: { $in: this.user.group } },
|
||||
{ assign: { $size: 0 } },
|
||||
],
|
||||
},
|
||||
});
|
||||
const [tdocs, tpcount] = await paginate<Tdoc>(cursor, page, system.get('pagination.contest'));
|
||||
const calendar = [];
|
||||
|
||||
Reference in new issue
Block a user