Commit fe1da4d0 authored by 何 广一's avatar 何 广一
Browse files

fix login & register page

parent 496f7668
No preview for this file type
...@@ -19,6 +19,9 @@ export async function POST(req: NextRequest): Promise<NextResponse<Ty.BackendRes ...@@ -19,6 +19,9 @@ export async function POST(req: NextRequest): Promise<NextResponse<Ty.BackendRes
if('code' in cookieData)return NextResponse.json(cookieData); if('code' in cookieData)return NextResponse.json(cookieData);
const { roomId, content, sender } = await req.json() as Ty.MessageAddArgs; const { roomId, content, sender } = await req.json() as Ty.MessageAddArgs;
const checkResult = await Db.CheckUser(sender, cookieData.userToken);
if (!checkResult) return Db.IncorrectUserResponse;
const response = await Db.AddMessage({ roomId, content, sender }); const response = await Db.AddMessage({ roomId, content, sender });
return NextResponse.json(response); return NextResponse.json(response);
} }
...@@ -417,3 +417,17 @@ export async function VerifyCookie(cookie : RequestCookies) : Promise<Ty.Backend ...@@ -417,3 +417,17 @@ export async function VerifyCookie(cookie : RequestCookies) : Promise<Ty.Backend
}; };
return cookieData; return cookieData;
} }
export async function CheckUser(name: string, token: string) : Promise<boolean> {
const user = await prisma.user.findUnique({
where: { name },
select: { userToken: true }
});
if (!user) return false;
return user.userToken === token;
}
export const IncorrectUserResponse: NextResponse<Ty.BackendResponse<null>> = NextResponse.json({
code: 105,
message: '用户名与登录令牌不匹配',
data: null
});
\ No newline at end of file
...@@ -16,7 +16,14 @@ interface RoomAddRes { ...@@ -16,7 +16,14 @@ interface RoomAddRes {
} }
*/ */
export async function POST(req: NextRequest) { export async function POST(req: NextRequest) {
const cookieData = await Db.VerifyCookie(req.cookies);
if('code' in cookieData)return NextResponse.json(cookieData);
const { user, roomName }: Ty.RoomAddArgs = await req.json(); const { user, roomName }: Ty.RoomAddArgs = await req.json();
const checkResult = await Db.CheckUser(user, cookieData.userToken);
if (!checkResult) return Db.IncorrectUserResponse;
const response = await Db.AddRoom({ user, roomName }); const response = await Db.AddRoom({ user, roomName });
return NextResponse.json(response); return NextResponse.json(response);
} }
\ No newline at end of file
...@@ -19,6 +19,9 @@ export async function POST(req: NextRequest): Promise<NextResponse<Ty.BackendRes ...@@ -19,6 +19,9 @@ export async function POST(req: NextRequest): Promise<NextResponse<Ty.BackendRes
if('code' in cookieData) return NextResponse.json(cookieData); if('code' in cookieData) return NextResponse.json(cookieData);
const { user, roomId } = await req.json() as Ty.RoomDeleteArgs; const { user, roomId } = await req.json() as Ty.RoomDeleteArgs;
const checkResult = await Db.CheckUser(user, cookieData.userToken);
if (!checkResult) return Db.IncorrectUserResponse;
const response = await Db.DeleteRoom({ user, roomId }, cookieData.userToken); const response = await Db.DeleteRoom({ user, roomId }, cookieData.userToken);
return NextResponse.json(response); return NextResponse.json(response);
} }
\ No newline at end of file
...@@ -18,6 +18,7 @@ function Home_Local(){ ...@@ -18,6 +18,7 @@ function Home_Local(){
const initSession = async () => { const initSession = async () => {
//url : /api/auth/startSession //url : /api/auth/startSession
setSession(null);
setPageError(null); setPageError(null);
setIsErrorInstant(false); setIsErrorInstant(false);
try{ try{
...@@ -43,7 +44,7 @@ function Home_Local(){ ...@@ -43,7 +44,7 @@ function Home_Local(){
} }
useEffect(() => { useEffect(() => {
initSession(); initSession();
}, []); }, [isLogin]);
const updatePassword = (value: string, confirm: string | null) => { const updatePassword = (value: string, confirm: string | null) => {
setPassword(value); setPassword(value);
...@@ -106,14 +107,15 @@ function Home_Local(){ ...@@ -106,14 +107,15 @@ function Home_Local(){
}); });
if (!res.ok) { if (!res.ok) {
throw new Error('登录失败,错误码:' + res.status); throw new Error('错误码:' + res.status);
} }
const data: Ty.BackendResponse<Auth.LoginResult> = await res.json(); const data: Ty.BackendResponse<Auth.LoginResult> = await res.json();
if (data.code !== 0) { if (data.code !== 0) {
throw new Error('登录失败,错误信息:' + data.message); throw new Error('错误信息:' + data.message);
} }
setPageError('登录成功,正在跳转……')
router.push(`/chat?username=${encodeURIComponent(username)}`); router.push(`/chat?username=${encodeURIComponent(username)}`);
} else { } else {
//URL : /api/auth/register //URL : /api/auth/register
...@@ -126,19 +128,21 @@ function Home_Local(){ ...@@ -126,19 +128,21 @@ function Home_Local(){
}); });
if (!res.ok) { if (!res.ok) {
throw new Error('注册失败,错误码:' + res.status); throw new Error('错误码:' + res.status);
} }
const data: Ty.BackendResponse<Auth.RegisterResult> = await res.json(); const data: Ty.BackendResponse<Auth.RegisterResult> = await res.json();
if (data.code !== 0) { if (data.code !== 0) {
throw new Error('注册失败,错误信息:' + data.message); throw new Error('错误信息:' + data.message);
} }
setPageError('注册成功,正在刷新页面……')
router.refresh(); router.refresh();
window.location.reload();
} }
} catch (error) { } catch (error) {
console.error(error); console.error(error);
setPageError((asLogin ? '登录错误' : '注册错误') + error.message); setPageError((asLogin ? '登录错误' : '注册错误') + error.message);
setIsErrorInstant(false); setIsErrorInstant(false);
} finally { } finally {
setPending(false); setPending(false);
...@@ -236,7 +240,6 @@ function Home_External() { ...@@ -236,7 +240,6 @@ function Home_External() {
} }
const HomeFn = useLocalBackend ? Home_Local : Home_External; const HomeFn = useLocalBackend ? Home_Local : Home_External;
export default function Home() { export default function Home() {
return HomeFn(); return HomeFn();
} }
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment