|
@@ -1,7 +1,7 @@
|
|
|
-import React, { useState } from 'react';
|
|
|
|
|
|
|
+import React, { useState, useEffect } from 'react';
|
|
|
import { useForm } from 'react-hook-form';
|
|
import { useForm } from 'react-hook-form';
|
|
|
import { UserIcon } from '@heroicons/react/24/outline';
|
|
import { UserIcon } from '@heroicons/react/24/outline';
|
|
|
-import { useNavigate } from 'react-router-dom';
|
|
|
|
|
|
|
+import { useNavigate, useSearchParams } from 'react-router-dom';
|
|
|
import { useAuth } from '@/client/mobile/hooks/AuthProvider';
|
|
import { useAuth } from '@/client/mobile/hooks/AuthProvider';
|
|
|
import { authClient } from '@/client/api';
|
|
import { authClient } from '@/client/api';
|
|
|
|
|
|
|
@@ -10,6 +10,16 @@ const AuthPage: React.FC = () => {
|
|
|
const [loading, setLoading] = useState(false);
|
|
const [loading, setLoading] = useState(false);
|
|
|
const { login } = useAuth();
|
|
const { login } = useAuth();
|
|
|
const navigate = useNavigate();
|
|
const navigate = useNavigate();
|
|
|
|
|
+ const [searchParams] = useSearchParams();
|
|
|
|
|
+
|
|
|
|
|
+ // 获取来源URL,优先使用URL参数,其次使用localStorage
|
|
|
|
|
+ const getReturnUrl = () => {
|
|
|
|
|
+ const urlParam = searchParams.get('returnUrl');
|
|
|
|
|
+ if (urlParam) {
|
|
|
|
|
+ return decodeURIComponent(urlParam);
|
|
|
|
|
+ }
|
|
|
|
|
+ return localStorage.getItem('mobile_return_url') || '/mobile';
|
|
|
|
|
+ };
|
|
|
|
|
|
|
|
const onSubmit = async (data: any) => {
|
|
const onSubmit = async (data: any) => {
|
|
|
try {
|
|
try {
|
|
@@ -18,7 +28,10 @@ const AuthPage: React.FC = () => {
|
|
|
// 首先尝试使用默认密码登录
|
|
// 首先尝试使用默认密码登录
|
|
|
try {
|
|
try {
|
|
|
await login(data.username, '123456');
|
|
await login(data.username, '123456');
|
|
|
- navigate('/');
|
|
|
|
|
|
|
+ // 登录成功后跳转回来源页
|
|
|
|
|
+ const returnUrl = getReturnUrl();
|
|
|
|
|
+ localStorage.removeItem('mobile_return_url'); // 清除保存的来源URL
|
|
|
|
|
+ navigate(returnUrl, { replace: true });
|
|
|
return; // 登录成功,直接返回
|
|
return; // 登录成功,直接返回
|
|
|
} catch (loginError) {
|
|
} catch (loginError) {
|
|
|
console.log('登录失败,尝试注册:', loginError);
|
|
console.log('登录失败,尝试注册:', loginError);
|
|
@@ -41,8 +54,10 @@ const AuthPage: React.FC = () => {
|
|
|
localStorage.setItem('token', result.token);
|
|
localStorage.setItem('token', result.token);
|
|
|
await login(data.username, '123456'); // 使用默认密码登录
|
|
await login(data.username, '123456'); // 使用默认密码登录
|
|
|
|
|
|
|
|
- // 跳转到首页
|
|
|
|
|
- navigate('/');
|
|
|
|
|
|
|
+ // 跳转回来源页
|
|
|
|
|
+ const returnUrl = getReturnUrl();
|
|
|
|
|
+ localStorage.removeItem('mobile_return_url'); // 清除保存的来源URL
|
|
|
|
|
+ navigate(returnUrl, { replace: true });
|
|
|
}
|
|
}
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
console.error('Authentication error:', error);
|
|
console.error('Authentication error:', error);
|