mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
core: add permission check for domain management routes
This commit is contained in:
1 parent
1f5e1e3596
commit
27528f9a4d
2 files changed
+11
-4
No files matched your search
@@ -131,6 +131,7 @@ class DomainDashboardHandler extends ManageHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class DomainUserHandler extends ManageHandler {
|
class DomainUserHandler extends ManageHandler {
|
||||||
|
@requireSudo
|
||||||
async get({ domainId }) {
|
async get({ domainId }) {
|
||||||
const rudocs = {};
|
const rudocs = {};
|
||||||
const [dudocs, roles] = await Promise.all([
|
const [dudocs, roles] = await Promise.all([
|
||||||
@@ -156,6 +157,7 @@ class DomainUserHandler extends ManageHandler {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@requireSudo
|
||||||
@post('uid', Types.Int)
|
@post('uid', Types.Int)
|
||||||
@post('role', Types.Name)
|
@post('role', Types.Name)
|
||||||
async postSetUser(domainId: string, uid: number, role: string) {
|
async postSetUser(domainId: string, uid: number, role: string) {
|
||||||
@@ -166,6 +168,7 @@ class DomainUserHandler extends ManageHandler {
|
|||||||
this.back();
|
this.back();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@requireSudo
|
||||||
@param('uid', Types.NumericArray)
|
@param('uid', Types.NumericArray)
|
||||||
@param('role', Types.Name)
|
@param('role', Types.Name)
|
||||||
async postSetUsers(domainId: string, uid: number[], role: string) {
|
async postSetUsers(domainId: string, uid: number[], role: string) {
|
||||||
@@ -178,6 +181,7 @@ class DomainUserHandler extends ManageHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class DomainPermissionHandler extends ManageHandler {
|
class DomainPermissionHandler extends ManageHandler {
|
||||||
|
@requireSudo
|
||||||
async get({ domainId }) {
|
async get({ domainId }) {
|
||||||
const roles = await domain.getRoles(domainId);
|
const roles = await domain.getRoles(domainId);
|
||||||
this.response.template = 'domain_permission.html';
|
this.response.template = 'domain_permission.html';
|
||||||
@@ -186,6 +190,7 @@ class DomainPermissionHandler extends ManageHandler {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@requireSudo
|
||||||
async post({ domainId }) {
|
async post({ domainId }) {
|
||||||
const roles = {};
|
const roles = {};
|
||||||
delete this.request.body.csrfToken;
|
delete this.request.body.csrfToken;
|
||||||
@@ -202,6 +207,7 @@ class DomainPermissionHandler extends ManageHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class DomainRoleHandler extends ManageHandler {
|
class DomainRoleHandler extends ManageHandler {
|
||||||
|
@requireSudo
|
||||||
async get({ domainId }) {
|
async get({ domainId }) {
|
||||||
const roles = await domain.getRoles(domainId, true);
|
const roles = await domain.getRoles(domainId, true);
|
||||||
this.response.template = 'domain_role.html';
|
this.response.template = 'domain_role.html';
|
||||||
@@ -218,6 +224,7 @@ class DomainRoleHandler extends ManageHandler {
|
|||||||
this.back();
|
this.back();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@requireSudo
|
||||||
@param('roles', Types.Array)
|
@param('roles', Types.Array)
|
||||||
async postDelete(domainId: string, roles: string[]) {
|
async postDelete(domainId: string, roles: string[]) {
|
||||||
if (Set.intersection(roles, ['root', 'default', 'guest']).size > 0) {
|
if (Set.intersection(roles, ['root', 'default', 'guest']).size > 0) {
|
||||||
@@ -243,6 +250,7 @@ class DomainJoinApplicationsHandler extends ManageHandler {
|
|||||||
this.response.template = 'domain_join_applications.html';
|
this.response.template = 'domain_join_applications.html';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@requireSudo
|
||||||
@post('method', Types.Range([domain.JOIN_METHOD_NONE, domain.JOIN_METHOD_ALL, domain.JOIN_METHOD_CODE]))
|
@post('method', Types.Range([domain.JOIN_METHOD_NONE, domain.JOIN_METHOD_ALL, domain.JOIN_METHOD_CODE]))
|
||||||
@post('role', Types.Name, true)
|
@post('role', Types.Name, true)
|
||||||
@post('expire', Types.Int, true)
|
@post('expire', Types.Int, true)
|
||||||
|
|||||||
@@ -3,13 +3,12 @@ import { FilterQuery, ObjectID } from 'mongodb';
|
|||||||
import { ProblemNotFoundError, ValidationError } from '../error';
|
import { ProblemNotFoundError, ValidationError } from '../error';
|
||||||
import { Tdoc, TrainingDoc } from '../interface';
|
import { Tdoc, TrainingDoc } from '../interface';
|
||||||
import paginate from '../lib/paginate';
|
import paginate from '../lib/paginate';
|
||||||
import { PERM, PRIV } from '../model/builtin';
|
import { PERM, PRIV, STATUS } from '../model/builtin';
|
||||||
import * as builtin from '../model/builtin';
|
import DomainModel from '../model/domain';
|
||||||
import problem from '../model/problem';
|
import problem from '../model/problem';
|
||||||
import * as system from '../model/system';
|
import * as system from '../model/system';
|
||||||
import * as training from '../model/training';
|
import * as training from '../model/training';
|
||||||
import user from '../model/user';
|
import user from '../model/user';
|
||||||
import { DomainModel } from '../plugin-api';
|
|
||||||
import * as bus from '../service/bus';
|
import * as bus from '../service/bus';
|
||||||
import { Handler, param, Types } from '../service/server';
|
import { Handler, param, Types } from '../service/server';
|
||||||
|
|
||||||
@@ -126,7 +125,7 @@ class TrainingDetailHandler extends Handler {
|
|||||||
if (!+pid) continue;
|
if (!+pid) continue;
|
||||||
const psdoc = psdict[pid];
|
const psdoc = psdict[pid];
|
||||||
if (psdoc.status) {
|
if (psdoc.status) {
|
||||||
if (psdoc.status === builtin.STATUS.STATUS_ACCEPTED) donePids.add(+pid);
|
if (psdoc.status === STATUS.STATUS_ACCEPTED) donePids.add(+pid);
|
||||||
else progPids.add(+pid);
|
else progPids.add(+pid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user