diff --git a/README.md b/README.md index 6776dff3..1d7eb2d0 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ _✨ All in one 的 OpenAI 接口,整合各种 API 访问方式,开箱即用 5. 支持设置令牌的过期时间和使用次数。 6. 支持批量生成和导出兑换码,可使用兑换码为令牌进行充值。 7. 支持为新用户设置初始配额。 -8. 支持发布公告,在线修改关于页面,设置充值链接,自定义页脚。 +8. 支持自定义首页,发布公告,自定义关于页面,设置充值链接,自定义页脚。 9. 支持通过系统访问令牌访问管理 API。 10. 多种用户登录注册方式: + 邮箱登录注册以及通过邮箱进行密码重置。 diff --git a/controller/misc.go b/controller/misc.go index 837c1df4..a9424d05 100644 --- a/controller/misc.go +++ b/controller/misc.go @@ -54,6 +54,17 @@ func GetAbout(c *gin.Context) { return } +func GetHomePageContent(c *gin.Context) { + common.OptionMapRWMutex.RLock() + defer common.OptionMapRWMutex.RUnlock() + c.JSON(http.StatusOK, gin.H{ + "success": true, + "message": "", + "data": common.OptionMap["HomePageContent"], + }) + return +} + func SendEmailVerification(c *gin.Context) { email := c.Query("email") if err := common.Validate.Var(email, "required,email"); err != nil { diff --git a/model/option.go b/model/option.go index 391fad0a..87ab9196 100644 --- a/model/option.go +++ b/model/option.go @@ -39,6 +39,7 @@ func InitOptionMap() { common.OptionMap["SMTPToken"] = "" common.OptionMap["Notice"] = "" common.OptionMap["About"] = "" + common.OptionMap["HomePageContent"] = "" common.OptionMap["Footer"] = common.Footer common.OptionMap["ServerAddress"] = "" common.OptionMap["GitHubClientId"] = "" diff --git a/router/api-router.go b/router/api-router.go index ded70500..09646b9e 100644 --- a/router/api-router.go +++ b/router/api-router.go @@ -15,6 +15,7 @@ func SetApiRouter(router *gin.Engine) { apiRouter.GET("/status", controller.GetStatus) apiRouter.GET("/notice", controller.GetNotice) apiRouter.GET("/about", controller.GetAbout) + apiRouter.GET("/home_page_content", controller.GetHomePageContent) apiRouter.GET("/verification", middleware.CriticalRateLimit(), middleware.TurnstileCheck(), controller.SendEmailVerification) apiRouter.GET("/reset_password", middleware.CriticalRateLimit(), middleware.TurnstileCheck(), controller.SendPasswordResetEmail) apiRouter.POST("/user/reset", middleware.CriticalRateLimit(), controller.ResetPassword) diff --git a/web/src/components/OtherSetting.js b/web/src/components/OtherSetting.js index 5c125169..4b1272b1 100644 --- a/web/src/components/OtherSetting.js +++ b/web/src/components/OtherSetting.js @@ -8,6 +8,7 @@ const OtherSetting = () => { Footer: '', Notice: '', About: '', + HomePageContent: '', }); let originInputs = {}; let [loading, setLoading] = useState(false); @@ -69,6 +70,10 @@ const OtherSetting = () => { await updateOption('About', inputs.About); }; + const submitOption = async (key) => { + await updateOption(key, inputs[key]); + }; + const openGitHubRelease = () => { window.location = 'https://github.com/songquanpeng/one-api/releases/latest'; @@ -109,6 +114,17 @@ const OtherSetting = () => {
名称:{statusState?.status?.system_name}
-版本:{statusState?.status?.version}
-- 源码: - - https://github.com/songquanpeng/one-api - -
-启动时间:{getStartTimeString()}
-- 邮箱验证: - {statusState?.status?.email_verification === true - ? '已启用' - : '未启用'} -
-- GitHub 身份验证: - {statusState?.status?.github_oauth === true - ? '已启用' - : '未启用'} -
-- 微信身份验证: - {statusState?.status?.wechat_login === true - ? '已启用' - : '未启用'} -
-- Turnstile 用户校验: - {statusState?.status?.turnstile_check === true - ? '已启用' - : '未启用'} -
-名称:{statusState?.status?.system_name}
+版本:{statusState?.status?.version}
++ 源码: + + https://github.com/songquanpeng/one-api + +
+启动时间:{getStartTimeString()}
++ 邮箱验证: + {statusState?.status?.email_verification === true + ? '已启用' + : '未启用'} +
++ GitHub 身份验证: + {statusState?.status?.github_oauth === true + ? '已启用' + : '未启用'} +
++ 微信身份验证: + {statusState?.status?.wechat_login === true + ? '已启用' + : '未启用'} +
++ Turnstile 用户校验: + {statusState?.status?.turnstile_check === true + ? '已启用' + : '未启用'} +
+