feat:登录功能迁移新登录页面
This commit is contained in:
parent
48d80ef281
commit
1714221e70
@ -80,7 +80,7 @@ export class AuthApi {
|
||||
email: data.email || '',
|
||||
phone: data.phone || '',
|
||||
username: data.email || data.phone || '',
|
||||
nickname: '用户',
|
||||
nickname: data.email || data.phone || '', // 使用登录账号作为昵称
|
||||
avatar: '',
|
||||
role: 'student',
|
||||
status: 'active',
|
||||
|
@ -210,20 +210,34 @@ const handleSubmit = async () => {
|
||||
// 显示加载状态
|
||||
userStore.isLoading = true
|
||||
|
||||
// 调用登录API - 使用学号登录
|
||||
const response = await AuthApi.login({
|
||||
username: formData.studentId, // 使用username字段传递学号
|
||||
console.log('🚀 开始登录:', { account: formData.studentId, password: '***' })
|
||||
console.log('🔍 表单密码长度:', formData.password?.length)
|
||||
|
||||
// 判断输入的是手机号还是邮箱
|
||||
const isPhone = /^[0-9]+$/.test(formData.studentId)
|
||||
|
||||
const loginParams = {
|
||||
...(isPhone ? { phone: formData.studentId } : { email: formData.studentId }),
|
||||
password: formData.password
|
||||
})
|
||||
}
|
||||
|
||||
if (response.code === 200) {
|
||||
const { user, token, refreshToken } = response.data
|
||||
console.log('🔍 准备发送的登录参数:', loginParams)
|
||||
|
||||
// 保存token到store和本地存储
|
||||
userStore.token = token
|
||||
localStorage.setItem('X-Access-Token', token)
|
||||
localStorage.setItem('token', token)
|
||||
localStorage.setItem('refreshToken', refreshToken)
|
||||
// 调用登录API
|
||||
const response = await AuthApi.login(loginParams)
|
||||
|
||||
console.log('✅ 登录响应:', response)
|
||||
|
||||
if (response.code === 200 || response.code === 0) {
|
||||
// 先保存token
|
||||
const token = response.data?.token || response.result?.token
|
||||
if (token) {
|
||||
userStore.token = token
|
||||
localStorage.setItem('X-Access-Token', token)
|
||||
localStorage.setItem('token', token)
|
||||
|
||||
console.log('✅ Token已保存:', token)
|
||||
}
|
||||
|
||||
// 如果选择了记住我,设置更长的过期时间
|
||||
if (rememberMe.value) {
|
||||
@ -249,28 +263,56 @@ const handleSubmit = async () => {
|
||||
|
||||
console.log('✅ 用户信息获取成功并保存到store:', userStore.user)
|
||||
} else {
|
||||
// 如果获取用户信息失败,使用登录接口返回的基本用户信息
|
||||
console.warn('⚠️ 获取用户信息失败,使用登录返回的基本信息')
|
||||
userStore.user = user
|
||||
localStorage.setItem('user', JSON.stringify(user))
|
||||
// 如果获取用户信息失败,创建基本用户信息
|
||||
console.warn('⚠️ 获取用户信息失败,使用基本信息')
|
||||
const basicUser = {
|
||||
id: 1,
|
||||
email: isPhone ? '' : formData.studentId,
|
||||
phone: isPhone ? formData.studentId : '',
|
||||
username: formData.studentId,
|
||||
nickname: formData.studentId,
|
||||
avatar: '',
|
||||
role: activeTab.value as 'student' | 'teacher',
|
||||
status: 'active' as const,
|
||||
createdAt: new Date().toISOString(),
|
||||
updatedAt: new Date().toISOString()
|
||||
}
|
||||
userStore.user = basicUser
|
||||
localStorage.setItem('user', JSON.stringify(basicUser))
|
||||
}
|
||||
} catch (userInfoError) {
|
||||
// 如果获取用户信息失败,使用登录接口返回的基本用户信息
|
||||
console.warn('⚠️ 获取用户信息异常,使用登录返回的基本信息:', userInfoError)
|
||||
userStore.user = user
|
||||
localStorage.setItem('user', JSON.stringify(user))
|
||||
// 如果获取用户信息异常,创建基本用户信息
|
||||
console.warn('⚠️ 获取用户信息异常,使用基本信息:', userInfoError)
|
||||
const basicUser = {
|
||||
id: 1,
|
||||
email: isPhone ? '' : formData.studentId,
|
||||
phone: isPhone ? formData.studentId : '',
|
||||
username: formData.studentId,
|
||||
nickname: formData.studentId,
|
||||
avatar: '',
|
||||
role: activeTab.value as 'student' | 'teacher',
|
||||
status: 'active' as const,
|
||||
createdAt: new Date().toISOString(),
|
||||
updatedAt: new Date().toISOString()
|
||||
}
|
||||
userStore.user = basicUser
|
||||
localStorage.setItem('user', JSON.stringify(basicUser))
|
||||
}
|
||||
|
||||
message.success('登录成功!')
|
||||
console.log('🎉 登录流程完成,用户信息已更新')
|
||||
|
||||
// 根据用户类型跳转到不同页面
|
||||
const redirect = router.currentRoute.value.query.redirect as string
|
||||
if (activeTab.value === 'teacher') {
|
||||
router.push(redirect || '/teacher')
|
||||
console.log('🔄 准备跳转到教师端...')
|
||||
await router.push(redirect || '/teacher')
|
||||
} else {
|
||||
router.push(redirect || '/')
|
||||
console.log('🔄 准备跳转到首页...')
|
||||
await router.push(redirect || '/')
|
||||
}
|
||||
} else {
|
||||
console.error('❌ 登录失败,响应码:', response.code)
|
||||
message.error(response.message || '登录失败')
|
||||
}
|
||||
} catch (error: any) {
|
||||
@ -278,11 +320,15 @@ const handleSubmit = async () => {
|
||||
|
||||
// 处理不同类型的错误
|
||||
if (error.response?.status === 401) {
|
||||
message.error('学号或密码错误')
|
||||
message.error('邮箱或密码错误')
|
||||
} else if (error.response?.status === 429) {
|
||||
message.error('登录尝试过于频繁,请稍后再试')
|
||||
} else if (error.response?.data?.message) {
|
||||
// 显示后端返回的具体错误信息
|
||||
message.error(error.response.data.message)
|
||||
} else if (error.message) {
|
||||
// 显示错误对象中的消息
|
||||
message.error(error.message)
|
||||
} else {
|
||||
message.error('网络错误,请检查网络连接')
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user