mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 09:46:28 +08:00
priv (unstable)
This commit is contained in:
1 parent
554698189c
commit
e092efca20
63 files changed
+706
-397
No files matched your search
@@ -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
@@ -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,
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
Reference in new issue
Block a user