UNPKG

i18n-management-cli

Version:

CLI tool for i18n management platform - import, export, and sync translations

96 lines (82 loc) 2.25 kB
const Config = require('./config'); const ApiClient = require('./api'); /** * 检查并验证用户认证状态 * @param {boolean} silent - 是否静默模式(不输出错误信息) * @returns {Promise<boolean>} - 返回认证是否有效 */ async function checkAuth(silent = false) { try { const config = new Config(); const token = config.get('token'); if (!token) { if (!silent) { console.error('❌ Authentication required'); console.log('💡 Please login first: i18n-cli login'); } return false; } // 验证token是否有效 const apiClient = new ApiClient(config); const userResponse = await apiClient.getCurrentUser(); if (userResponse.success) { return true; } else { if (!silent) { console.error('❌ Authentication token expired or invalid'); console.log('💡 Please login again: i18n-cli login'); } // 清除无效token config.set('token', ''); config.save(); return false; } } catch (error) { if (!silent) { console.error('❌ Authentication check failed:', error.message); console.log('💡 Please login again: i18n-cli login'); } // 清除可能无效的token const config = new Config(); config.set('token', ''); config.save(); return false; } } /** * 需要认证的命令包装器 * 在执行命令前检查认证状态 */ function requireAuth(commandHandler) { return async function(...args) { const isAuthenticated = await checkAuth(); if (!isAuthenticated) { console.log('\n🔐 This command requires authentication.'); console.log('Please run: i18n-cli login'); process.exit(1); } // 认证通过,执行原始命令 return await commandHandler(...args); }; } /** * 获取当前用户信息 */ async function getCurrentUser() { try { const config = new Config(); const apiClient = new ApiClient(config); const userResponse = await apiClient.getCurrentUser(); if (userResponse.success) { return userResponse.user; } return null; } catch { return null; } } module.exports = { checkAuth, requireAuth, getCurrentUser };