From 140e843d93b956e236ca9e03ffe96905b8fbb7bf Mon Sep 17 00:00:00 2001 From: Ehco1996 Date: Fri, 1 Mar 2024 20:39:28 +0800 Subject: [PATCH] Add Telegram bot token and name --- common/constants.go | 3 ++ docker-compose.yml | 2 +- makefile | 17 +++++++ model/option.go | 4 ++ web/src/components/SystemSetting.js | 75 +++++++++++++++++++++-------- 5 files changed, 81 insertions(+), 20 deletions(-) create mode 100644 makefile diff --git a/common/constants.go b/common/constants.go index 26684e3..55cc793 100644 --- a/common/constants.go +++ b/common/constants.go @@ -82,6 +82,9 @@ var WeChatAccountQRCodeImageURL = "" var TurnstileSiteKey = "" var TurnstileSecretKey = "" +var TelegramBotToken = "" +var TelegramBotName = "" + var QuotaForNewUser = 0 var QuotaForInviter = 0 var QuotaForInvitee = 0 diff --git a/docker-compose.yml b/docker-compose.yml index 40da248..403f372 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,7 +12,7 @@ services: - ./data:/data - ./logs:/app/logs environment: - - SQL_DSN=root:123456@tcp(host.docker.internal:3306)/new-api # 修改此行,或注释掉以使用 SQLite 作为数据库 + # - SQL_DSN=root:123456@tcp(host.docker.internal:3306)/new-api # 修改此行,或注释掉以使用 SQLite 作为数据库 - REDIS_CONN_STRING=redis://redis - SESSION_SECRET=random_string # 修改为随机字符串 - TZ=Asia/Shanghai diff --git a/makefile b/makefile new file mode 100644 index 0000000..1df2b5c --- /dev/null +++ b/makefile @@ -0,0 +1,17 @@ +FRONTEND_DIR = ./web +BACKEND_DIR = . + +.PHONY: all start-frontend start-backend + +all: start-frontend start-backend + +# 启动前端开发服务器 +start-frontend: + @echo "Starting frontend dev server..." + @cd $(FRONTEND_DIR) && npm start & + +# 启动后端开发服务器 +start-backend: + @echo "Starting backend dev server..." + @cd $(BACKEND_DIR) && go run main.go & + diff --git a/model/option.go b/model/option.go index a651b85..dcb4c34 100644 --- a/model/option.go +++ b/model/option.go @@ -215,6 +215,10 @@ func updateOptionMap(key string, value string) (err error) { common.WeChatServerToken = value case "WeChatAccountQRCodeImageURL": common.WeChatAccountQRCodeImageURL = value + case "TelegramBotToken": + common.TelegramBotToken = value + case "TelegramBotName": + common.TelegramBotName = value case "TurnstileSiteKey": common.TurnstileSiteKey = value case "TurnstileSecretKey": diff --git a/web/src/components/SystemSetting.js b/web/src/components/SystemSetting.js index 197050e..a8956b7 100644 --- a/web/src/components/SystemSetting.js +++ b/web/src/components/SystemSetting.js @@ -1,6 +1,6 @@ -import React, {useEffect, useState} from 'react'; -import {Button, Divider, Form, Grid, Header, Modal, Message} from 'semantic-ui-react'; -import {API, removeTrailingSlash, showError, verifyJSON} from '../helpers'; +import React, { useEffect, useState } from 'react'; +import { Button, Divider, Form, Grid, Header, Modal, Message } from 'semantic-ui-react'; +import { API, removeTrailingSlash, showError, verifyJSON } from '../helpers'; const SystemSetting = () => { let [inputs, setInputs] = useState({ @@ -32,7 +32,11 @@ const SystemSetting = () => { TurnstileSecretKey: '', RegisterEnabled: '', EmailDomainRestrictionEnabled: '', - EmailDomainWhitelist: '' + EmailDomainWhitelist: '', + // telegram login + TelegramLoginEnabled: '', + TelegramBotToken: '', + TelegramBotName: '', }); const [originInputs, setOriginInputs] = useState({}); let [loading, setLoading] = useState(false); @@ -42,7 +46,7 @@ const SystemSetting = () => { const getOptions = async () => { const res = await API.get('/api/option/'); - const {success, message, data} = res.data; + const { success, message, data } = res.data; if (success) { let newInputs = {}; data.forEach((item) => { @@ -58,7 +62,7 @@ const SystemSetting = () => { setOriginInputs(newInputs); setEmailDomainWhitelist(newInputs.EmailDomainWhitelist.split(',').map((item) => { - return {key: item, text: item, value: item}; + return { key: item, text: item, value: item }; })); } else { showError(message); @@ -77,6 +81,7 @@ const SystemSetting = () => { case 'EmailVerificationEnabled': case 'GitHubOAuthEnabled': case 'WeChatAuthEnabled': + case 'TelegramLoginEnabled': case 'TurnstileCheckEnabled': case 'EmailDomainRestrictionEnabled': case 'RegisterEnabled': @@ -89,7 +94,7 @@ const SystemSetting = () => { key, value }); - const {success, message} = res.data; + const { success, message } = res.data; if (success) { if (key === 'EmailDomainWhitelist') { value = value.split(','); @@ -106,7 +111,7 @@ const SystemSetting = () => { setLoading(false); }; - const handleInputChange = async (e, {name, value}) => { + const handleInputChange = async (e, { name, value }) => { if (name === 'PasswordLoginEnabled' && inputs[name] === 'true') { // block disabling password login setShowPasswordWarningModal(true); @@ -130,7 +135,7 @@ const SystemSetting = () => { name === 'EmailDomainWhitelist' || name === 'TopupGroupRatio' ) { - setInputs((inputs) => ({...inputs, [name]: value})); + setInputs((inputs) => ({ ...inputs, [name]: value })); } else { await updateOption(name, value); } @@ -234,6 +239,12 @@ const SystemSetting = () => { } }; + const submitTelegramSettings = async () => { + await updateOption('TelegramLoginEnabled', inputs.TelegramLoginEnabled); + await updateOption('TelegramBotToken', inputs.TelegramBotToken); + await updateOption('TelegramBotName', inputs.TelegramBotName); + }; + const submitTurnstile = async () => { if (originInputs['TurnstileSiteKey'] !== inputs.TurnstileSiteKey) { await updateOption('TurnstileSiteKey', inputs.TurnstileSiteKey); @@ -279,7 +290,7 @@ const SystemSetting = () => { 更新服务器地址 - +
支付设置(当前仅支持易支付接口,使用上方服务器地址作为回调地址!)
{ label='充值分组倍率' name='TopupGroupRatio' onChange={handleInputChange} - style={{minHeight: 250, fontFamily: 'JetBrains Mono, Consolas'}} + style={{ minHeight: 250, fontFamily: 'JetBrains Mono, Consolas' }} autoComplete='new-password' value={inputs.TopupGroupRatio} placeholder='为一个 JSON 文本,键为组名称,值为倍率' @@ -327,7 +338,7 @@ const SystemSetting = () => { 更新支付设置 - +
配置登录注册
{ open={showPasswordWarningModal} onClose={() => setShowPasswordWarningModal(false)} size={'tiny'} - style={{maxWidth: '450px'}} + style={{ maxWidth: '450px' }} > 警告 @@ -401,7 +412,33 @@ const SystemSetting = () => { onChange={handleInputChange} /> - + +
配置 Telegram 登录
+ + + + + + + 保存 Telegram 登录设置 +
配置邮箱域名白名单 用以防止恶意用户利用临时邮箱批量注册 @@ -443,13 +480,13 @@ const SystemSetting = () => { autoComplete='new-password' placeholder='输入新的允许的邮箱域名' value={restrictedDomainInput} - onChange={(e, {value}) => { + onChange={(e, { value }) => { setRestrictedDomainInput(value); }} /> 保存邮箱域名白名单设置 - +
配置 SMTP 用以支持系统的邮件发送 @@ -500,7 +537,7 @@ const SystemSetting = () => { /> 保存 SMTP 设置 - +
配置 GitHub OAuth App @@ -538,7 +575,7 @@ const SystemSetting = () => { 保存 GitHub OAuth 设置 - +
配置 WeChat Server @@ -582,7 +619,7 @@ const SystemSetting = () => { 保存 WeChat Server 设置 - +
配置 Turnstile