From 6ed173affaae78fb058a693242ef64130dcbde97 Mon Sep 17 00:00:00 2001 From: JustSong Date: Thu, 22 Dec 2022 18:32:10 +0800 Subject: [PATCH] feat: able to set whether to enable message persistence and message rendering now --- common/constants.go | 2 ++ controller/message.go | 38 +++++++++++++++++++++++------ controller/misc.go | 26 +++++++++++--------- model/option.go | 6 +++++ web/src/components/SystemSetting.js | 18 ++++++++++++++ 5 files changed, 70 insertions(+), 20 deletions(-) diff --git a/common/constants.go b/common/constants.go index 666054d..a54ca7a 100644 --- a/common/constants.go +++ b/common/constants.go @@ -29,6 +29,8 @@ var GitHubOAuthEnabled = false var WeChatAuthEnabled = false var TurnstileCheckEnabled = false var RegisterEnabled = true +var MessagePersistenceEnabled = true +var MessageRenderEnabled = true var SMTPServer = "" var SMTPAccount = "" diff --git a/controller/message.go b/controller/message.go index f5085e3..ba5a98c 100644 --- a/controller/message.go +++ b/controller/message.go @@ -113,14 +113,18 @@ func pushMessageHelper(c *gin.Context, message *model.Message) { message.Channel = channel.TypeEmail } } - err = message.UpdateAndInsert(user.Id) - message.URL = fmt.Sprintf("%s/message/%s", common.ServerAddress, message.Link) - if err != nil { - c.JSON(http.StatusOK, gin.H{ - "success": false, - "message": err.Error(), - }) - return + if common.MessagePersistenceEnabled { + err = message.UpdateAndInsert(user.Id) + if err != nil { + c.JSON(http.StatusOK, gin.H{ + "success": false, + "message": err.Error(), + }) + return + } + message.URL = fmt.Sprintf("%s/message/%s", common.ServerAddress, message.Link) + } else { + message.URL = fmt.Sprintf("%s/message/unsaved", common.ServerAddress) } err = channel.SendMessage(message, &user) if err != nil { @@ -143,7 +147,25 @@ func GetStaticFile(c *gin.Context) { } func RenderMessage(c *gin.Context) { + if !common.MessageRenderEnabled { + c.HTML(http.StatusOK, "message.html", gin.H{ + "title": "无法渲染", + "time": time.Now().Format("2006-01-02 15:04:05"), + "description": "超级管理员禁用了消息渲染", + "content": "很抱歉,您所使用的消息推送服务的管理员禁用了消息渲染功能,因此您的消息无法渲染。", + }) + return + } link := c.Param("link") + if link == "unsaved" { + c.HTML(http.StatusOK, "message.html", gin.H{ + "title": "无法渲染", + "time": time.Now().Format("2006-01-02 15:04:05"), + "description": "超级管理员禁用了消息持久化", + "content": "很抱歉,您所使用的消息推送服务的管理员禁用了消息持久化功能,您的消息并没有存储到数据库中,因此无法渲染。", + }) + return + } message, err := model.GetMessageByLink(link) if err != nil { c.Status(http.StatusNotFound) diff --git a/controller/misc.go b/controller/misc.go index 6ea1634..83b082e 100644 --- a/controller/misc.go +++ b/controller/misc.go @@ -14,18 +14,20 @@ func GetStatus(c *gin.Context) { "success": true, "message": "", "data": gin.H{ - "version": common.Version, - "start_time": common.StartTime, - "email_verification": common.EmailVerificationEnabled, - "github_oauth": common.GitHubOAuthEnabled, - "github_client_id": common.GitHubClientId, - "system_name": common.SystemName, - "footer_html": common.Footer, - "wechat_qrcode": common.WeChatAccountQRCodeImageURL, - "wechat_login": common.WeChatAuthEnabled, - "server_address": common.ServerAddress, - "turnstile_check": common.TurnstileCheckEnabled, - "turnstile_site_key": common.TurnstileSiteKey, + "version": common.Version, + "start_time": common.StartTime, + "email_verification": common.EmailVerificationEnabled, + "github_oauth": common.GitHubOAuthEnabled, + "github_client_id": common.GitHubClientId, + "system_name": common.SystemName, + "footer_html": common.Footer, + "wechat_qrcode": common.WeChatAccountQRCodeImageURL, + "wechat_login": common.WeChatAuthEnabled, + "server_address": common.ServerAddress, + "turnstile_check": common.TurnstileCheckEnabled, + "turnstile_site_key": common.TurnstileSiteKey, + "message_persistence": common.MessagePersistenceEnabled, + "message_render": common.MessageRenderEnabled, }, }) return diff --git a/model/option.go b/model/option.go index 79f5b7d..b430845 100644 --- a/model/option.go +++ b/model/option.go @@ -32,6 +32,8 @@ func InitOptionMap() { common.OptionMap["WeChatAuthEnabled"] = strconv.FormatBool(common.WeChatAuthEnabled) common.OptionMap["TurnstileCheckEnabled"] = strconv.FormatBool(common.TurnstileCheckEnabled) common.OptionMap["RegisterEnabled"] = strconv.FormatBool(common.RegisterEnabled) + common.OptionMap["MessagePersistenceEnabled"] = strconv.FormatBool(common.MessagePersistenceEnabled) + common.OptionMap["MessageRenderEnabled"] = strconv.FormatBool(common.MessageRenderEnabled) common.OptionMap["SMTPServer"] = "" common.OptionMap["SMTPAccount"] = "" common.OptionMap["SMTPToken"] = "" @@ -103,6 +105,10 @@ func updateOptionMap(key string, value string) { common.TurnstileCheckEnabled = boolValue case "RegisterEnabled": common.RegisterEnabled = boolValue + case "MessagePersistenceEnabled": + common.MessagePersistenceEnabled = boolValue + case "MessageRenderEnabled": + common.MessageRenderEnabled = boolValue } } switch key { diff --git a/web/src/components/SystemSetting.js b/web/src/components/SystemSetting.js index f681061..7fc0179 100644 --- a/web/src/components/SystemSetting.js +++ b/web/src/components/SystemSetting.js @@ -24,6 +24,8 @@ const SystemSetting = () => { TurnstileSiteKey: '', TurnstileSecretKey: '', RegisterEnabled: '', + MessagePersistenceEnabled: '', + MessageRenderEnabled: '', }); let originInputs = {}; let [loading, setLoading] = useState(false); @@ -57,6 +59,8 @@ const SystemSetting = () => { case 'WeChatAuthEnabled': case 'TurnstileCheckEnabled': case 'RegisterEnabled': + case 'MessagePersistenceEnabled': + case 'MessageRenderEnabled': value = inputs[key] === 'true' ? 'false' : 'true'; break; default: @@ -179,6 +183,20 @@ const SystemSetting = () => { 更新服务器地址 + + + +
配置登录注册