mirror of
https://github.com/snowykami/neo-blog.git
synced 2025-09-26 19:16:24 +00:00
feat: 更新验证码逻辑,优化邮件验证功能,增加验证码冷却时间,改进用户体验Closes #17
This commit is contained in:
@ -14,7 +14,8 @@ const (
|
||||
RoleEditor = "editor" // 能够发布和管理自己内容的用户
|
||||
RoleAdmin = "admin"
|
||||
DefaultFileBasePath = "./data/uploads"
|
||||
EnvKeyBaseUrl = "BASE_URL" // 环境变量:基础URL
|
||||
EnvKeyBaseUrl = "BASE_URL" // 环境变量:基础URL
|
||||
EnvKeyPasscode = "\"CAPTCHA_DEV_PASSCODE\""
|
||||
EnvKeyCaptchaProvider = "CAPTCHA_PROVIDER" // captcha提供者
|
||||
EnvKeyCaptchaSecreteKey = "CAPTCHA_SECRET_KEY" // captcha站点密钥
|
||||
EnvKeyCaptchaUrl = "CAPTCHA_URL" // 某些自托管的captcha的url
|
||||
@ -64,7 +65,8 @@ const (
|
||||
OidcUri = "/user/oidc/login" // OIDC登录URI
|
||||
OidcProviderTypeMisskey = "misskey" // OIDC提供者类型:Misskey
|
||||
OidcProviderTypeOauth2 = "oauth2" // OIDC提供者类型:GitHub
|
||||
DefaultBaseUrl = "http://localhost:3000" // 默认BaseUrl
|
||||
DefaultCaptchaDevPasscode = "dev_passcode"
|
||||
DefaultBaseUrl = "http://localhost:3000" // 默认BaseUrl
|
||||
DefaultPasswordSalt = "default_salt_114514"
|
||||
TargetTypePost = "post"
|
||||
TargetTypeComment = "comment"
|
||||
|
@ -25,21 +25,17 @@ type EmailConfig struct {
|
||||
SSL bool // 是否使用SSL
|
||||
}
|
||||
|
||||
// SendTemplate 发送HTML模板,从配置文件中读取邮箱配置,支持上下文控制
|
||||
func (e *emailUtils) SendTemplate(emailConfig *EmailConfig, target, subject, htmlTemplate string, data map[string]interface{}) error {
|
||||
func (e *emailUtils) RenderTemplate(htmlTemplate string, data map[string]interface{}) (string, error) {
|
||||
// 使用Go的模板系统处理HTML模板
|
||||
tmpl, err := template.New("email").Parse(htmlTemplate)
|
||||
if err != nil {
|
||||
return fmt.Errorf("解析模板失败: %w", err)
|
||||
return "", fmt.Errorf("解析模板失败: %w", err)
|
||||
}
|
||||
|
||||
var buf bytes.Buffer
|
||||
if err := tmpl.Execute(&buf, data); err != nil {
|
||||
return fmt.Errorf("执行模板失败: %w", err)
|
||||
return "", fmt.Errorf("执行模板失败: %w", err)
|
||||
}
|
||||
|
||||
// 发送处理后的HTML内容
|
||||
return e.SendEmail(emailConfig, target, subject, buf.String(), true)
|
||||
return buf.String(), nil
|
||||
}
|
||||
|
||||
// SendEmail 使用gomail库发送邮件
|
||||
|
@ -1 +1,16 @@
|
||||
package utils
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestEmailUtils_SendEmail(t *testing.T) {
|
||||
templateString := "{{.A}} {{.B}} {{.C}}"
|
||||
data := map[string]interface{}{"A": 1, "B": 2, "C": 3}
|
||||
rendered, err := Email.RenderTemplate(templateString, data)
|
||||
if err != nil {
|
||||
t.Fatalf("RenderTemplate failed: %v", err)
|
||||
}
|
||||
expected := "1 2 3"
|
||||
if rendered != expected {
|
||||
t.Errorf("RenderTemplate = %q; want %q", rendered, expected)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user