guanghulab/docs/js/auth.js

122 lines
3.3 KiB
JavaScript
Raw Normal View History

/**
* auth.js 团队登录前端逻辑
*
* 开发者编号免配置登录
* 1. 选择/输入开发者编号 DEV-002
* 2. 后端验证编号 返回会话 token
* 3. 自动绑定团队 API 直接进入对话
* 4. 不需要手动输入任何 API Key
*
* 版权国作登字-2026-A-00037559
*/
'use strict';
var TeamAuth = (function() {
/**
* 团队登录 开发者编号直接进
* @param {string} devId - 开发者编号 DEV-002
* @returns {Promise<Object>} 登录结果
*/
async function teamLogin(devId) {
try {
var response = await fetch('/api/auth/team-login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ devId: devId })
});
var data = await response.json();
if (data.success) {
// 存储会话 tokensessionStorage关闭标签页即清除
sessionStorage.setItem('team_session_token', data.sessionToken);
localStorage.setItem('team_dev_id', devId);
localStorage.setItem('team_dev_name', data.devName);
localStorage.setItem('team_dev_level', String(data.level));
localStorage.setItem('team_dev_channel', data.channel);
// API Key 不存前端,后端代理所有 API 调用
return { success: true, data: data };
} else {
return { success: false, message: data.message || '开发者编号不存在,请检查。' };
}
} catch (err) {
return { success: false, message: '连接失败,请稍后重试。' };
}
}
/**
* 验证当前会话
* @returns {Promise<Object>}
*/
async function verifySession() {
var token = sessionStorage.getItem('team_session_token');
if (!token) return { valid: false };
try {
var response = await fetch('/api/auth/verify', {
headers: { 'Authorization': 'Bearer ' + token }
});
return await response.json();
} catch (err) {
return { valid: false };
}
}
/**
* 注销
*/
async function logout() {
var token = sessionStorage.getItem('team_session_token');
if (token) {
try {
await fetch('/api/auth/logout', {
method: 'POST',
headers: { 'Authorization': 'Bearer ' + token }
});
} catch (err) {
// 静默失败
}
}
sessionStorage.removeItem('team_session_token');
localStorage.removeItem('team_dev_id');
localStorage.removeItem('team_dev_name');
localStorage.removeItem('team_dev_level');
localStorage.removeItem('team_dev_channel');
}
/**
* 获取当前会话 token用于 API 请求头
* @returns {string|null}
*/
function getSessionToken() {
return sessionStorage.getItem('team_session_token') || null;
}
/**
* 获取已登录的开发者信息
* @returns {Object|null}
*/
function getDevInfo() {
var devId = localStorage.getItem('team_dev_id');
if (!devId) return null;
return {
devId: devId,
name: localStorage.getItem('team_dev_name') || '',
level: parseInt(localStorage.getItem('team_dev_level') || '0', 10),
channel: localStorage.getItem('team_dev_channel') || ''
};
}
return {
teamLogin: teamLogin,
verifySession: verifySession,
logout: logout,
getSessionToken: getSessionToken,
getDevInfo: getDevInfo
};
})();