priv (unstable)

This commit is contained in:
undefined committed 2020-06-29 13:33:44 +08:00
1 parent 554698189c
commit e092efca20
63 files changed
+706 -397

No files matched your search

+3
View File
@@ -1,3 +1,6 @@
// From https://github.com/pvorb/node-md5/blob/master/md5.js
// BSD 3-Clause "New" or "Revised" License
/* eslint-disable no-bitwise */ /* eslint-disable max-len */
function safeAdd(x, y) {
const lsw = (x & 0xffff) + (y & 0xffff);
+28 -6
View File
@@ -1,13 +1,35 @@
const permission = require('../permission');
const { isNull } = require('lodash');
const permission = require('../model/builtin').PERM;
global.Hydro.ui.nav = [];
const trueChecker = () => true;
const Item = (name, args, prefix, perm, checker) => {
if (perm && checker) {
checker = ((_chk) => (handler) => _chk(handler) && handler.user.hasPerm(perm))(checker);
} else if (perm) {
checker = (handler) => handler.user.hasPerm(perm);
const Item = (name, args, prefix, ...permPrivChecker) => {
let _priv;
let _perm;
let checker;
for (const item of permPrivChecker) {
if (typeof item === 'object' && !isNull(item)) {
if (typeof item.call !== 'undefined') {
checker = item;
} if (typeof item[0] === 'number') {
_priv = item;
} else if (typeof item[0] === 'string') {
_perm = item;
}
} else if (typeof item === 'number') {
_priv = item;
} else if (typeof item === 'string') {
_perm = item;
}
}
if ((_perm || _priv) && checker) {
checker = ((_chk) => (handler) => _chk(handler)
&& (_perm ? handler.user.hasPerm(_perm) : true)
&& (_priv ? handler.user.hasPriv(_priv) : true))(checker);
} else if (_perm) {
checker = (handler) => handler.user.hasPerm(_perm);
} else if (!checker) checker = trueChecker;
global.Hydro.ui.nav.push({
name, args: args || {}, prefix, checker,
+5 -6
View File
@@ -1,8 +1,6 @@
const nunjucks = require('nunjucks');
const markdown = require('./markdown');
const perm = require('../permission');
const builtin = require('../model/builtin');
const model = require('../model');
const { STATUS, PERM, PRIV } = require('../model/builtin');
const misc = require('./misc');
function Loader() { }
@@ -38,11 +36,12 @@ function render(name, state) {
static_url: (str) => `/${str}`,
datetimeSpan: misc.datetimeSpan,
paginate: misc.paginate,
perm,
status: builtin.status,
perm: PERM,
PRIV,
STATUS,
size: misc.size,
gravatar: misc.gravatar,
model,
model: global.Hydro.model,
Context: global.Hydro.ui,
isIE: (str) => str.includes('MSIE') || str.includes('rv:11.0'),
}, (err, res) => {