mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
更新权限节点
This commit is contained in:
1 parent
e092efca20
commit
b22082beba
16 files changed
+88
-87
No files matched your search
@@ -12,8 +12,8 @@ const {
|
||||
PERM_VIEW_CONTEST, PERM_EDIT_CONTEST_SELF,
|
||||
},
|
||||
PRIV: {
|
||||
PRIV_READ_RECORD_CODE
|
||||
}
|
||||
PRIV_READ_RECORD_CODE,
|
||||
},
|
||||
} = require('../model/builtin');
|
||||
const contest = require('../model/contest');
|
||||
const document = require('../model/document');
|
||||
|
||||
+10
-12
@@ -2,9 +2,9 @@ const user = require('../model/user');
|
||||
const domain = require('../model/domain');
|
||||
const system = require('../model/system');
|
||||
const { DOMAIN_SETTINGS, DOMAIN_SETTINGS_BY_KEY } = require('../model/setting');
|
||||
const { PERM: { PERM_EDIT_DOMAIN }, PERMS_BY_FAMILY } = require('../model/builtin');
|
||||
const paginate = require('../lib/paginate');
|
||||
const { Route, Handler } = require('../service/server');
|
||||
const { PERM_MANAGE } = require('../model/builtin').PERM;
|
||||
const { RoleAlreadyExistError, ValidationError, PermissionError } = require('../error');
|
||||
|
||||
class DomainRankHandler extends Handler {
|
||||
@@ -55,7 +55,7 @@ class DomainCreateHandler extends Handler {
|
||||
|
||||
class ManageHandler extends Handler {
|
||||
async prepare({ domainId }) {
|
||||
this.checkPerm(PERM_MANAGE);
|
||||
this.checkPerm(PERM_EDIT_DOMAIN);
|
||||
this.domain = await domain.get(domainId);
|
||||
}
|
||||
}
|
||||
@@ -95,9 +95,8 @@ class DomainDashboardHandler extends ManageHandler {
|
||||
|
||||
class DomainUserHandler extends ManageHandler {
|
||||
async get({ domainId }) {
|
||||
const uids = [];
|
||||
const rudocs = {};
|
||||
const [udocs, roles] = await Promise.all([
|
||||
const [dudocs, roles] = await Promise.all([
|
||||
user.getMultiInDomain(domainId, {
|
||||
$and: [
|
||||
{ role: { $ne: 'default' } },
|
||||
@@ -106,17 +105,14 @@ class DomainUserHandler extends ManageHandler {
|
||||
}).toArray(),
|
||||
user.getRoles(domainId),
|
||||
]);
|
||||
const uids = dudocs.map((dudoc) => dudoc.uid);
|
||||
const udict = await user.getList(domainId, uids);
|
||||
for (const role of roles) rudocs[role._id] = [];
|
||||
for (const udoc of udocs) {
|
||||
uids.push(udoc.uid);
|
||||
const ud = user.getById(domainId, udoc.uid);
|
||||
for (const dudoc of dudocs) {
|
||||
const ud = udict[dudoc.uid];
|
||||
rudocs[ud.role].push(ud);
|
||||
}
|
||||
const tasks = [];
|
||||
for (const key in rudocs) tasks.push(Promise.all(rudocs[key]));
|
||||
await Promise.all(tasks);
|
||||
const rolesSelect = roles.map((role) => [role._id, role._id]);
|
||||
const udict = await user.getList(domainId, uids);
|
||||
const path = [
|
||||
['Hydro', 'homepage'],
|
||||
['domain', null],
|
||||
@@ -143,7 +139,9 @@ class DomainPermissionHandler extends ManageHandler {
|
||||
['domain_permission', null],
|
||||
];
|
||||
this.response.template = 'domain_permission.html';
|
||||
this.response.body = { roles, domain: this.domain, path };
|
||||
this.response.body = {
|
||||
roles, PERMS_BY_FAMILY, domain: this.domain, path,
|
||||
};
|
||||
}
|
||||
|
||||
async post({ domainId }) {
|
||||
|
||||
@@ -49,8 +49,9 @@ class StatusUpdateHandler extends Handler {
|
||||
|
||||
class SwitchLanguageHandler extends Handler {
|
||||
async get({ lang }) {
|
||||
if (this.user.hasPriv(PRIV_USER_PROFILE)) await user.setById(this.user._id, { viewLang: lang });
|
||||
else this.session.viewLang = lang;
|
||||
if (this.user.hasPriv(PRIV_USER_PROFILE)) {
|
||||
await user.setById(this.user._id, { viewLang: lang });
|
||||
} else this.session.viewLang = lang;
|
||||
this.back();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,13 +2,13 @@ const domain = require('../model/domain');
|
||||
const system = require('../model/system');
|
||||
const setting = require('../model/setting');
|
||||
const { Route, Handler } = require('../service/server');
|
||||
const { PERM_MANAGE } = require('../model/builtin').PERM;
|
||||
const { PRIV_EDIT_SYSTEM } = require('../model/builtin').PRIV;
|
||||
const hpm = require('../lib/hpm');
|
||||
const loader = require('../loader');
|
||||
|
||||
class SystemHandler extends Handler {
|
||||
async prepare({ domainId }) {
|
||||
this.checkPerm(PERM_MANAGE);
|
||||
this.checkPriv(PRIV_EDIT_SYSTEM);
|
||||
this.domain = await domain.get(domainId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ const {
|
||||
PERM_VIEW_PROBLEM_HIDDEN,
|
||||
},
|
||||
PRIV: {
|
||||
PRIV_USER_PROFILE, PRIV_REGISTER_USER,
|
||||
PRIV_USER_PROFILE, PRIV_REGISTER_USER, PRIV_NONE,
|
||||
},
|
||||
} = require('../model/builtin');
|
||||
|
||||
@@ -41,7 +41,7 @@ class UserLoginHandler extends Handler {
|
||||
if (!udoc) throw new LoginError(uname);
|
||||
if (udoc) udoc.checkPassword(password);
|
||||
await user.setById(udoc._id, { loginat: new Date(), loginip: this.request.ip });
|
||||
if (udoc.ban) throw new BlacklistedError(uname);
|
||||
if (udoc.priv === PRIV_NONE) throw new BlacklistedError(uname);
|
||||
this.session.uid = udoc._id;
|
||||
this.session.rememberme = rememberme;
|
||||
this.response.redirect = this.request.referer.endsWith('/login') ? '/' : this.request.referer;
|
||||
|
||||
Reference in new issue
Block a user