1.5.2 • Published 4 years ago
@button-dev/utils-backend v1.5.2
/**
* 设置configs,将在本软件包内部应用
* @param {object} newConfigs
*/
function setConfigs(newConfigs)
/**
* 抛出一个错误,将status和error打包为JSON.stringify形式,常用于ctx
* @param {number} status
* @param {number} code
* @param {string} message
* @throws {Error}
*/
function throwError
/**
* 注入错误反馈响应
* @param {*} ctx
* @param {Error} error
*/
function throwErrorResponse(ctx, error)
/**
* 注入401响应
* @param {*} ctx
*/
function throwUnauthorizedErrorResponse(ctx)
/**
* 请求一个v3标准的POST API
* @param {string} url
* @param {object} data
* @param {boolean} withAccess 如果true, 则向data中添加{ jwtAccess }
* @returns {object}
* @throws {Error}
*/
async function requestApi(url, data, withAccess = false)
/**
* 检查请求体中是否有合法的jwtAccess
* @param {*} ctx
* @returns {boolean}
*/
function jwtHasAccess(ctx)
/**
* 查询当前请求体是否有某个权限。请求体可以是系统级别(是否有jwtAccess),也可以是某个用户(jwtUserId)
* @param {*} ctx
* @param {string} permission 权限条目,默认'system'
* @param {boolean} noCache 本次查询是否禁用缓存
* @returns {Promise<boolean>}
*/
function jwtHasPermission(ctx, permission = 'system', noCache = false)
/**
* 用已配置的cert来生成jwt字符串
* @param {object|*} data 待加密数据,推荐类型为对象
* @param {number} expire 过期时间(秒)
* @returns {string}
*/
function jwtGenerateWithConfiguredCert(data, expire = 20)
/**
* 用已配置的cert来解密jwt字符串
* @param {string} text
* @returns {*}
*/
function jwtResolveWithConfiguredCert(text)
/**
* 生成一个access对象,可用于`ctx.body = { ...accessObject, ...others }`
* @param {number} expire
*/
function jwtGenerateAccessObject(expire = 20)
/**
* @getClientIP
* @desc 获取用户 ip 地址
* @param {Object} req - 请求
*/
function getClientIP(req)
/**
* 默认中间件
* 捕捉错误,返回错误响应;debug模式下打印POST的请求体
* @param {*} ctx
* @param {async function} next
*/
async function middleware(ctx, next)
/**
* 尝试解析jwtUserId为一个正常的userId
* @param {*} ctx
* @returns {number|null}
*/
function jwtResolveUserId(ctx)
/**
* 查询用户(或游客)的权限
* @param {number} userId 用户id,留空表示游客
* @param {boolean} noCache 本次查询是否禁用缓存
* @returns {Promise<{ allow:[], forbidden:[] }>}
*/
async function getPermission({ userId, noCache = false })
/**
* 查询用户(或游客)的是否有某个权限
* @param {string} permission 权限条目,如 'project.read'
* @param {number} userId 用户id,留空表示游客
* @param {boolean} noCache 本次查询是否禁用缓存
* @returns {Promise<boolean>}
*/
async function hasPermission({ permission, userId, noCache = false })
/**
* 加密jwtUserId
* @param {number} userId 用户id
* @param {number} expire 有效期(秒)
* @returns {string}
*/
function jwtGenerateUserId({ userId, expire = 3600 * 24 * 14 })