|
- /**
- * 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 };
|