|
|
|
|
@ -77,12 +77,7 @@ const saveUserToStorage = (userData) => {
|
|
|
|
|
|
|
|
|
|
// 清除用户数据
|
|
|
|
|
const clearUserData = () => {
|
|
|
|
|
// 清除当前用户的独立存储
|
|
|
|
|
if (userInfo.value.username) {
|
|
|
|
|
const userInfoKey = `userInfo_${userInfo.value.username}`
|
|
|
|
|
localStorage.removeItem(userInfoKey)
|
|
|
|
|
}
|
|
|
|
|
// 清除通用存储(兼容旧版本)
|
|
|
|
|
// 只清除通用存储(兼容旧版本),不删除用户详细信息
|
|
|
|
|
localStorage.removeItem('userInfo')
|
|
|
|
|
localStorage.removeItem('userToken')
|
|
|
|
|
userInfo.value = {
|
|
|
|
|
@ -106,22 +101,26 @@ const login = (loginData) => {
|
|
|
|
|
// 首先检查用户是否已注册
|
|
|
|
|
const userRegistryKey = `userRegistry_${loginData.username}`
|
|
|
|
|
const existingRegistry = localStorage.getItem(userRegistryKey)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!existingRegistry) {
|
|
|
|
|
reject({ success: false, message: '用户不存在,请先注册' })
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 校验密码
|
|
|
|
|
let registryObj = null
|
|
|
|
|
try {
|
|
|
|
|
registryObj = JSON.parse(existingRegistry)
|
|
|
|
|
} catch (e) {
|
|
|
|
|
reject({ success: false, message: '用户注册信息损坏,请重新注册' })
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if (!registryObj.password || registryObj.password !== loginData.password) {
|
|
|
|
|
reject({ success: false, message: '密码错误' })
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
// 优先从用户特定的存储中加载用户数据
|
|
|
|
|
const userInfoKey = `userInfo_${loginData.username}`
|
|
|
|
|
let storedUser = localStorage.getItem(userInfoKey)
|
|
|
|
|
let userData
|
|
|
|
|
|
|
|
|
|
console.log('登录调试 - 用户信息键:', userInfoKey)
|
|
|
|
|
console.log('登录调试 - 用户信息数据:', storedUser)
|
|
|
|
|
console.log('登录调试 - 所有用户信息键:', Object.keys(localStorage).filter(key => key.startsWith('userInfo_')))
|
|
|
|
|
|
|
|
|
|
let userData = null;
|
|
|
|
|
if (storedUser) {
|
|
|
|
|
try {
|
|
|
|
|
const existingUser = JSON.parse(storedUser)
|
|
|
|
|
@ -130,52 +129,34 @@ const login = (loginData) => {
|
|
|
|
|
isLoggedIn: true
|
|
|
|
|
}
|
|
|
|
|
} catch (error) {
|
|
|
|
|
// 如果解析失败,尝试从通用存储加载
|
|
|
|
|
storedUser = localStorage.getItem('userInfo')
|
|
|
|
|
if (storedUser) {
|
|
|
|
|
try {
|
|
|
|
|
const existingUser = JSON.parse(storedUser)
|
|
|
|
|
if (existingUser.username === loginData.username) {
|
|
|
|
|
userData = {
|
|
|
|
|
...existingUser,
|
|
|
|
|
isLoggedIn: true
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
reject({ success: false, message: '用户数据不匹配,请重新注册' })
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
} catch (error2) {
|
|
|
|
|
reject({ success: false, message: '用户数据损坏,请重新注册' })
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
reject({ success: false, message: '用户数据不存在,请重新注册' })
|
|
|
|
|
return
|
|
|
|
|
// 解析失败,自动用注册信息生成默认用户信息
|
|
|
|
|
userData = {
|
|
|
|
|
username: registryObj.username,
|
|
|
|
|
nickname: registryObj.username,
|
|
|
|
|
avatar: 'https://avatars.githubusercontent.com/u/9919?v=4',
|
|
|
|
|
birthday: '2000-01-01',
|
|
|
|
|
occupation: '未知',
|
|
|
|
|
hobbies: 'ta一点也没透露',
|
|
|
|
|
bio: '这是一个新用户',
|
|
|
|
|
isLoggedIn: true
|
|
|
|
|
}
|
|
|
|
|
// 自动修复本地存储
|
|
|
|
|
localStorage.setItem(userInfoKey, JSON.stringify(userData))
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 没有用户特定数据,尝试从通用存储加载
|
|
|
|
|
storedUser = localStorage.getItem('userInfo')
|
|
|
|
|
if (storedUser) {
|
|
|
|
|
try {
|
|
|
|
|
const existingUser = JSON.parse(storedUser)
|
|
|
|
|
if (existingUser.username === loginData.username) {
|
|
|
|
|
userData = {
|
|
|
|
|
...existingUser,
|
|
|
|
|
isLoggedIn: true
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
reject({ success: false, message: '用户数据不匹配,请重新注册' })
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
} catch (error) {
|
|
|
|
|
reject({ success: false, message: '用户数据损坏,请重新注册' })
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
reject({ success: false, message: '用户数据不存在,请重新注册' })
|
|
|
|
|
return
|
|
|
|
|
// userInfo_用户名 丢失,自动用注册信息生成默认用户信息
|
|
|
|
|
userData = {
|
|
|
|
|
username: registryObj.username,
|
|
|
|
|
nickname: registryObj.username,
|
|
|
|
|
avatar: 'https://avatars.githubusercontent.com/u/9919?v=4',
|
|
|
|
|
birthday: '2000-01-01',
|
|
|
|
|
occupation: '未知',
|
|
|
|
|
hobbies: 'ta一点也没透露',
|
|
|
|
|
bio: '这是一个新用户',
|
|
|
|
|
isLoggedIn: true
|
|
|
|
|
}
|
|
|
|
|
// 自动修复本地存储
|
|
|
|
|
localStorage.setItem(userInfoKey, JSON.stringify(userData))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
userInfo.value = userData
|
|
|
|
|
@ -220,9 +201,10 @@ const register = (registerData) => {
|
|
|
|
|
isLoggedIn: true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 保存用户注册记录
|
|
|
|
|
// 保存用户注册记录(包含密码)
|
|
|
|
|
localStorage.setItem(userRegistryKey, JSON.stringify({
|
|
|
|
|
username: registerData.username,
|
|
|
|
|
password: registerData.password,
|
|
|
|
|
registeredAt: Date.now()
|
|
|
|
|
}))
|
|
|
|
|
|
|
|
|
|
|