// otp.js - OTP相关服务 import request from '../utils/request'; /** * 创建新的OTP * @param {Object} params - 创建OTP的参数 * @param {string} params.name - OTP名称 * @param {string} params.issuer - 发行方 * @param {string} params.secret - 密钥 * @param {string} params.algorithm - 算法,默认为SHA1 * @param {number} params.digits - 位数,默认为6 * @param {number} params.period - 周期,默认为30秒 * @returns {Promise} - 返回创建结果 */ export const createOTP = (params) => { if (!params || !params.secret) { return Promise.reject(new Error('缺少必要的参数: secret')); } return request({ url: '/otp', method: 'POST', data: { name: params.name || '', issuer: params.issuer || '', secret: params.secret, algorithm: params.algorithm || 'SHA1', digits: params.digits || 6, period: params.period || 30 } }).catch(err => { console.error('创建OTP失败:', err); throw new Error('创建OTP失败: ' + (err.message || '未知错误')); }); }; /** * 获取用户所有OTP列表 * @returns {Promise} - 返回OTP列表 */ export const getOTPList = () => { return request({ url: '/otp', method: 'GET' }).catch(err => { console.error('获取OTP列表失败:', err); throw new Error('获取OTP列表失败: ' + (err.message || '未知错误')); }); }; /** * 获取指定OTP的当前验证码 * @param {string} id - OTP的ID * @returns {Promise} - 返回当前验证码 */ export const getOTPCode = (id) => { if (!id) { return Promise.reject(new Error('缺少必要的参数: id')); } return request({ url: `/otp/${id}/code`, method: 'GET' }).catch(err => { console.error('获取OTP代码失败:', err); throw new Error('获取OTP代码失败: ' + (err.message || '未知错误')); }); }; /** * 验证OTP * @param {string} id - OTP的ID * @param {string} code - 用户输入的验证码 * @returns {Promise} - 返回验证结果 */ export const verifyOTP = (id, code) => { if (!id || !code) { return Promise.reject(new Error('缺少必要的参数: id或code')); } return request({ url: `/otp/${id}/verify`, method: 'POST', data: { code } }).catch(err => { console.error('验证OTP失败:', err); throw new Error('验证OTP失败: ' + (err.message || '未知错误')); }); }; /** * 更新OTP信息 * @param {string} id - OTP的ID * @param {Object} params - 更新的参数 * @returns {Promise} - 返回更新结果 */ export const updateOTP = (id, params) => { if (!id || !params) { return Promise.reject(new Error('缺少必要的参数: id或params')); } return request({ url: `/otp/${id}`, method: 'PUT', data: params }).catch(err => { console.error('更新OTP失败:', err); throw new Error('更新OTP失败: ' + (err.message || '未知错误')); }); }; /** * 删除OTP * @param {string} id - OTP的ID * @returns {Promise} - 返回删除结果 */ export const deleteOTP = (id) => { return request({ url: `/otp/${id}`, method: 'DELETE' }); };