P0 MVP: - 认证:login/refresh/logout/forgot/reset + tokenVersion - RBAC:角色到权限映射 + requirePermission - 发票池:upload/bind/signed-url + 判重(VALID_003/VALID_005) - 报销:create/view/submit + 单号生成 - 工作流:approve + department_manager 解析 P1 扩展: - 动作:reject/return/withdraw(含 comment) - transfer:任务转审 + 链路上限 3 - pay:approved -> paid + 发票归档 used_complete - 动态审批链:approval_rules 驱动 回归脚本: - smoke-test.sh / regression-dedup.sh / regression-workflow-actions.sh
28 行
575 B
JavaScript
28 行
575 B
JavaScript
const crypto = require("node:crypto");
|
|
const bcrypt = require("bcryptjs");
|
|
|
|
function sha256Hex(input) {
|
|
return crypto.createHash("sha256").update(input).digest("hex");
|
|
}
|
|
|
|
function randomRefreshToken() {
|
|
return crypto.randomBytes(32).toString("base64url");
|
|
}
|
|
|
|
async function hashPassword(password) {
|
|
const saltRounds = 12;
|
|
return bcrypt.hash(password, saltRounds);
|
|
}
|
|
|
|
async function verifyPassword(password, passwordHash) {
|
|
return bcrypt.compare(password, passwordHash);
|
|
}
|
|
|
|
module.exports = {
|
|
hashPassword,
|
|
randomRefreshToken,
|
|
sha256Hex,
|
|
verifyPassword,
|
|
};
|
|
|