import jwt from 'jsonwebtoken'; const JWT_SECRET = process.env.JWT_SECRET || 'default-secret-key-please-change-in-production'; const JWT_EXPIRES_IN = '7d'; // 用户 token 类型 export const TOKEN_TYPE = { USER: 'user', ADMIN: 'admin' }; /** * 生成用户访问 token * @param {string} passwordName - 密码名称 * @returns {string} JWT token */ export function generateUserToken(passwordName) { return jwt.sign( { type: TOKEN_TYPE.USER, name: passwordName }, JWT_SECRET, { expiresIn: JWT_EXPIRES_IN } ); } /** * 生成管理员 token * @param {string} username - 管理员用户名 * @returns {string} JWT token */ export function generateAdminToken(username) { return jwt.sign( { type: TOKEN_TYPE.ADMIN, username }, JWT_SECRET, { expiresIn: JWT_EXPIRES_IN } ); } /** * 验证 token * @param {string} token - JWT token * @returns {object|null} 解码后的 payload 或 null */ export function verifyToken(token) { try { return jwt.verify(token, JWT_SECRET); } catch (error) { return null; } } /** * 检查是否为管理员 token * @param {object} payload - token payload * @returns {boolean} */ export function isAdminToken(payload) { return payload && payload.type === TOKEN_TYPE.ADMIN; } /** * 检查是否为用户 token * @param {object} payload - token payload * @returns {boolean} */ export function isUserToken(payload) { return payload && payload.type === TOKEN_TYPE.USER; }