mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 02:04:11 +01:00 
			
		
		
		
	Finsih mail resend limit
This commit is contained in:
		
							parent
							
								
									67c4e54298
								
							
						
					
					
						commit
						d40499e7fa
					
				@ -5,7 +5,7 @@ Gogs(Go Git Service) is a GitHub-like clone in the Go Programming Language.
 | 
			
		||||
 | 
			
		||||
Since we choose to use pure Go implementation of Git manipulation, Gogs certainly supports **ALL platforms**  that Go supports, including Linux, Max OS X, and Windows with **ZERO** dependency.
 | 
			
		||||
 | 
			
		||||
##### Current version: 0.1.4 Alpha
 | 
			
		||||
##### Current version: 0.1.5 Alpha
 | 
			
		||||
 | 
			
		||||
## Purpose
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -61,8 +61,14 @@ USER =
 | 
			
		||||
PASSWD = 
 | 
			
		||||
 | 
			
		||||
[cache]
 | 
			
		||||
; Either "memory", "redis", or "memcache", default is "memory"
 | 
			
		||||
ADAPTER = memory
 | 
			
		||||
CONFIG = 
 | 
			
		||||
; For "memory" only, GC interval in seconds, default is 60
 | 
			
		||||
INTERVAL = 60
 | 
			
		||||
; For "redis" and "memcache", connection host address
 | 
			
		||||
; redis: ":6039"
 | 
			
		||||
; memcache: "127.0.0.1:11211"
 | 
			
		||||
HOST =
 | 
			
		||||
 | 
			
		||||
[log]
 | 
			
		||||
; Either "console", "file", "conn" or "smtp", default is "console"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								gogs.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								gogs.go
									
									
									
									
									
								
							@ -20,7 +20,7 @@ import (
 | 
			
		||||
// Test that go1.2 tag above is included in builds. main.go refers to this definition.
 | 
			
		||||
const go12tag = true
 | 
			
		||||
 | 
			
		||||
const APP_VER = "0.1.4.0321"
 | 
			
		||||
const APP_VER = "0.1.5.0321"
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	base.AppVer = APP_VER
 | 
			
		||||
 | 
			
		||||
@ -35,7 +35,6 @@ func LoadModelsConfig() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func setEngine() {
 | 
			
		||||
 | 
			
		||||
	var err error
 | 
			
		||||
	switch DbCfg.Type {
 | 
			
		||||
	case "mysql":
 | 
			
		||||
 | 
			
		||||
@ -133,6 +133,30 @@ func newLogService() {
 | 
			
		||||
	log.Info("Log Mode: %s(%s)", strings.Title(mode), levelName)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func newCacheService() {
 | 
			
		||||
	CacheAdapter = Cfg.MustValue("cache", "ADAPTER", "memory")
 | 
			
		||||
 | 
			
		||||
	switch CacheAdapter {
 | 
			
		||||
	case "memory":
 | 
			
		||||
		CacheConfig = fmt.Sprintf(`{"interval":%d}`, Cfg.MustInt("cache", "INTERVAL", 60))
 | 
			
		||||
	case "redis", "memcache":
 | 
			
		||||
		CacheConfig = fmt.Sprintf(`{"conn":"%s"}`, Cfg.MustValue("cache", "HOST"))
 | 
			
		||||
	default:
 | 
			
		||||
		fmt.Printf("Unknown cache adapter: %s\n", CacheAdapter)
 | 
			
		||||
		os.Exit(2)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var err error
 | 
			
		||||
	Cache, err = cache.NewCache(CacheAdapter, CacheConfig)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Printf("Init cache system failed, adapter: %s, config: %s, %v\n",
 | 
			
		||||
			CacheAdapter, CacheConfig, err)
 | 
			
		||||
		os.Exit(2)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	log.Info("Cache Service Enabled")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func newMailService() {
 | 
			
		||||
	// Check mailer setting.
 | 
			
		||||
	if Cfg.MustBool("mailer", "ENABLED") {
 | 
			
		||||
@ -188,16 +212,6 @@ func NewConfigContext() {
 | 
			
		||||
	SecretKey = Cfg.MustValue("security", "SECRET_KEY")
 | 
			
		||||
	RunUser = Cfg.MustValue("", "RUN_USER")
 | 
			
		||||
 | 
			
		||||
	CacheAdapter = Cfg.MustValue("cache", "ADAPTER")
 | 
			
		||||
	CacheConfig = Cfg.MustValue("cache", "CONFIG")
 | 
			
		||||
 | 
			
		||||
	Cache, err = cache.NewCache(CacheAdapter, CacheConfig)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Printf("Init cache system failed, adapter: %s, config: %s, %v\n",
 | 
			
		||||
			CacheAdapter, CacheConfig, err)
 | 
			
		||||
		os.Exit(2)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Determine and create root git reposiroty path.
 | 
			
		||||
	RepoRootPath = Cfg.MustValue("repository", "ROOT")
 | 
			
		||||
	if err = os.MkdirAll(RepoRootPath, os.ModePerm); err != nil {
 | 
			
		||||
@ -209,6 +223,7 @@ func NewConfigContext() {
 | 
			
		||||
func NewServices() {
 | 
			
		||||
	newService()
 | 
			
		||||
	newLogService()
 | 
			
		||||
	newCacheService()
 | 
			
		||||
	newMailService()
 | 
			
		||||
	newRegisterMailService()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -67,5 +67,8 @@ func Config(ctx *middleware.Context) {
 | 
			
		||||
		ctx.Data["Mailer"] = base.MailService
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ctx.Data["CacheAdapter"] = base.CacheAdapter
 | 
			
		||||
	ctx.Data["CacheConfig"] = base.CacheConfig
 | 
			
		||||
 | 
			
		||||
	ctx.HTML(200, "admin/config")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -167,6 +167,10 @@ func SignUp(ctx *middleware.Context, form auth.RegisterForm) {
 | 
			
		||||
		ctx.Data["Email"] = u.Email
 | 
			
		||||
		ctx.Data["Hours"] = base.Service.ActiveCodeLives / 60
 | 
			
		||||
		ctx.HTML(200, "user/active")
 | 
			
		||||
 | 
			
		||||
		if err = ctx.Cache.Put("MailResendLimit_"+u.LowerName, u.LowerName, 180); err != nil {
 | 
			
		||||
			log.Error("Set cache(MailResendLimit) fail: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	ctx.Redirect("/user/login")
 | 
			
		||||
@ -247,8 +251,12 @@ func Activate(ctx *middleware.Context) {
 | 
			
		||||
		}
 | 
			
		||||
		// Resend confirmation e-mail.
 | 
			
		||||
		if base.Service.RegisterEmailConfirm {
 | 
			
		||||
			ctx.Data["Hours"] = base.Service.ActiveCodeLives / 60
 | 
			
		||||
			mailer.SendActiveMail(ctx.Render, ctx.User)
 | 
			
		||||
			if ctx.Cache.IsExist("MailResendLimit_" + ctx.User.LowerName) {
 | 
			
		||||
				ctx.Data["ResendLimited"] = true
 | 
			
		||||
			} else {
 | 
			
		||||
				ctx.Data["Hours"] = base.Service.ActiveCodeLives / 60
 | 
			
		||||
				mailer.SendActiveMail(ctx.Render, ctx.User)
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			ctx.Data["ServiceNotEnabled"] = true
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@ -63,6 +63,17 @@
 | 
			
		||||
                <div><b>User:</b> {{.Mailer.User}}</div>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="panel panel-default">
 | 
			
		||||
            <div class="panel-heading">
 | 
			
		||||
                Cache Configuration
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
            <div class="panel-body">
 | 
			
		||||
                <div><b>Cache Adapter:</b> {{.CacheAdapter}}</div>
 | 
			
		||||
                <div><b>Cache Config:</b> <code>{{.CacheConfig}}</code></div>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</div>
 | 
			
		||||
{{template "base/footer" .}}
 | 
			
		||||
@ -6,6 +6,8 @@
 | 
			
		||||
        {{if .IsActivatePage}}
 | 
			
		||||
            {{if .ServiceNotEnabled}}
 | 
			
		||||
            <p>Sorry, Register Mail Confirmation has been disabled.</p>
 | 
			
		||||
            {{else if .ResendLimited}}
 | 
			
		||||
            <p>Sorry, you are sending activation e-mail too frequently, please wait 3 minutes.</p>
 | 
			
		||||
            {{else}}
 | 
			
		||||
            <p>New confirmation e-mail has been sent to <b>{{.SignedUser.Email}}</b>, please check your inbox within {{.Hours}} hours to complete your registeration.</p>
 | 
			
		||||
            <hr/>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user