From dd293f80ae276aa86b69f7814d312548ddc6ab3f Mon Sep 17 00:00:00 2001 From: CalciumIon <1808837298@qq.com> Date: Sat, 7 Dec 2024 18:08:51 +0800 Subject: [PATCH] fix: telegram register --- web/src/components/RegisterForm.js | 36 +++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/web/src/components/RegisterForm.js b/web/src/components/RegisterForm.js index d3256960..2c45e61c 100644 --- a/web/src/components/RegisterForm.js +++ b/web/src/components/RegisterForm.js @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React, { useContext, useEffect, useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import { API, getLogo, showError, showInfo, showSuccess, updateAPI } from '../helpers'; import Turnstile from 'react-turnstile'; @@ -11,6 +11,7 @@ import LinuxDoIcon from './LinuxDoIcon.js'; import WeChatIcon from './WeChatIcon.js'; import TelegramLoginButton from 'react-telegram-login/src'; import { setUserData } from '../helpers/data.js'; +import { UserContext } from '../context/User/index.js'; const RegisterForm = () => { const [inputs, setInputs] = useState({ @@ -22,6 +23,7 @@ const RegisterForm = () => { }); const { username, password, password2 } = inputs; const [showEmailVerification, setShowEmailVerification] = useState(false); + const [userState, userDispatch] = useContext(UserContext); const [turnstileEnabled, setTurnstileEnabled] = useState(false); const [turnstileSiteKey, setTurnstileSiteKey] = useState(''); const [turnstileToken, setTurnstileToken] = useState(''); @@ -133,6 +135,38 @@ const RegisterForm = () => { setLoading(false); }; + const onTelegramLoginClicked = async (response) => { + const fields = [ + 'id', + 'first_name', + 'last_name', + 'username', + 'photo_url', + 'auth_date', + 'hash', + 'lang', + ]; + const params = {}; + fields.forEach((field) => { + if (response[field]) { + params[field] = response[field]; + } + }); + const res = await API.get(`/api/oauth/telegram/login`, { params }); + const { success, message, data } = res.data; + if (success) { + userDispatch({ type: 'login', payload: data }); + localStorage.setItem('user', JSON.stringify(data)); + showSuccess('登录成功!'); + setUserData(data); + updateAPI(); + navigate('/'); + } else { + showError(message); + } + }; + + return (