mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +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();
|
if (rule && contest.RULES[rule].hidden) throw new BadRequestError();
|
||||||
const rules = Object.keys(contest.RULES).filter((i) => !contest.RULES[i].hidden);
|
const rules = Object.keys(contest.RULES).filter((i) => !contest.RULES[i].hidden);
|
||||||
const q = {
|
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 } },
|
...rule ? { rule } : { rule: { $in: rules } },
|
||||||
};
|
};
|
||||||
const cursor = contest.getMulti(domainId, q);
|
const cursor = contest.getMulti(domainId, q);
|
||||||
|
|||||||
@@ -25,7 +25,16 @@ class HomeworkMainHandler extends Handler {
|
|||||||
async get(domainId: string, page = 1) {
|
async get(domainId: string, page = 1) {
|
||||||
const cursor = contest.getMulti(domainId, {
|
const cursor = contest.getMulti(domainId, {
|
||||||
rule: 'homework',
|
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 [tdocs, tpcount] = await paginate<Tdoc>(cursor, page, system.get('pagination.contest'));
|
||||||
const calendar = [];
|
const calendar = [];
|
||||||
|
|||||||
Reference in new issue
Block a user