/** * NewApiLoginWidget - Headless login SDK * * Usage: * const result = await NewApiLoginWidget.login({ * apiUrl: 'https://your-domain.com', * username: 'user', * password: 'pass' * }); */ async function login({ apiUrl, username, password }) { if (!apiUrl) { throw new Error('NewApiLoginWidget: apiUrl is required'); } if (!username || !username.trim()) { return { success: false, message: '请输入用户名' }; } if (!password) { return { success: false, message: '请输入密码' }; } const url = apiUrl.replace(/\/+$/, '') + '/api/user/login'; try { const res = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, credentials: 'include', body: JSON.stringify({ username: username.trim(), password }), }); const data = await res.json(); if (data.success) { if (data.data && data.data.require_2fa) { return { success: false, message: '此账户启用了两步验证,暂不支持通过 Widget 登录', }; } return { success: true, data: data.data }; } return { success: false, message: data.message || '登录失败' }; } catch (err) { return { success: false, message: '网络错误,请检查网络连接' }; } } window.NewApiLoginWidget = { login }; export { login };