mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	Finsih mail resend limit
This commit is contained in:
		| @@ -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. | 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 | ## Purpose | ||||||
|  |  | ||||||
|   | |||||||
| @@ -61,8 +61,14 @@ USER = | |||||||
| PASSWD =  | PASSWD =  | ||||||
|  |  | ||||||
| [cache] | [cache] | ||||||
|  | ; Either "memory", "redis", or "memcache", default is "memory" | ||||||
| ADAPTER = 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] | [log] | ||||||
| ; Either "console", "file", "conn" or "smtp", default is "console" | ; 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. | // Test that go1.2 tag above is included in builds. main.go refers to this definition. | ||||||
| const go12tag = true | const go12tag = true | ||||||
|  |  | ||||||
| const APP_VER = "0.1.4.0321" | const APP_VER = "0.1.5.0321" | ||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	base.AppVer = APP_VER | 	base.AppVer = APP_VER | ||||||
|   | |||||||
| @@ -35,7 +35,6 @@ func LoadModelsConfig() { | |||||||
| } | } | ||||||
|  |  | ||||||
| func setEngine() { | func setEngine() { | ||||||
|  |  | ||||||
| 	var err error | 	var err error | ||||||
| 	switch DbCfg.Type { | 	switch DbCfg.Type { | ||||||
| 	case "mysql": | 	case "mysql": | ||||||
|   | |||||||
| @@ -133,6 +133,30 @@ func newLogService() { | |||||||
| 	log.Info("Log Mode: %s(%s)", strings.Title(mode), levelName) | 	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() { | func newMailService() { | ||||||
| 	// Check mailer setting. | 	// Check mailer setting. | ||||||
| 	if Cfg.MustBool("mailer", "ENABLED") { | 	if Cfg.MustBool("mailer", "ENABLED") { | ||||||
| @@ -188,16 +212,6 @@ func NewConfigContext() { | |||||||
| 	SecretKey = Cfg.MustValue("security", "SECRET_KEY") | 	SecretKey = Cfg.MustValue("security", "SECRET_KEY") | ||||||
| 	RunUser = Cfg.MustValue("", "RUN_USER") | 	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. | 	// Determine and create root git reposiroty path. | ||||||
| 	RepoRootPath = Cfg.MustValue("repository", "ROOT") | 	RepoRootPath = Cfg.MustValue("repository", "ROOT") | ||||||
| 	if err = os.MkdirAll(RepoRootPath, os.ModePerm); err != nil { | 	if err = os.MkdirAll(RepoRootPath, os.ModePerm); err != nil { | ||||||
| @@ -209,6 +223,7 @@ func NewConfigContext() { | |||||||
| func NewServices() { | func NewServices() { | ||||||
| 	newService() | 	newService() | ||||||
| 	newLogService() | 	newLogService() | ||||||
|  | 	newCacheService() | ||||||
| 	newMailService() | 	newMailService() | ||||||
| 	newRegisterMailService() | 	newRegisterMailService() | ||||||
| } | } | ||||||
|   | |||||||
| @@ -67,5 +67,8 @@ func Config(ctx *middleware.Context) { | |||||||
| 		ctx.Data["Mailer"] = base.MailService | 		ctx.Data["Mailer"] = base.MailService | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	ctx.Data["CacheAdapter"] = base.CacheAdapter | ||||||
|  | 	ctx.Data["CacheConfig"] = base.CacheConfig | ||||||
|  |  | ||||||
| 	ctx.HTML(200, "admin/config") | 	ctx.HTML(200, "admin/config") | ||||||
| } | } | ||||||
|   | |||||||
| @@ -167,6 +167,10 @@ func SignUp(ctx *middleware.Context, form auth.RegisterForm) { | |||||||
| 		ctx.Data["Email"] = u.Email | 		ctx.Data["Email"] = u.Email | ||||||
| 		ctx.Data["Hours"] = base.Service.ActiveCodeLives / 60 | 		ctx.Data["Hours"] = base.Service.ActiveCodeLives / 60 | ||||||
| 		ctx.HTML(200, "user/active") | 		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 | 		return | ||||||
| 	} | 	} | ||||||
| 	ctx.Redirect("/user/login") | 	ctx.Redirect("/user/login") | ||||||
| @@ -247,8 +251,12 @@ func Activate(ctx *middleware.Context) { | |||||||
| 		} | 		} | ||||||
| 		// Resend confirmation e-mail. | 		// Resend confirmation e-mail. | ||||||
| 		if base.Service.RegisterEmailConfirm { | 		if base.Service.RegisterEmailConfirm { | ||||||
| 			ctx.Data["Hours"] = base.Service.ActiveCodeLives / 60 | 			if ctx.Cache.IsExist("MailResendLimit_" + ctx.User.LowerName) { | ||||||
| 			mailer.SendActiveMail(ctx.Render, ctx.User) | 				ctx.Data["ResendLimited"] = true | ||||||
|  | 			} else { | ||||||
|  | 				ctx.Data["Hours"] = base.Service.ActiveCodeLives / 60 | ||||||
|  | 				mailer.SendActiveMail(ctx.Render, ctx.User) | ||||||
|  | 			} | ||||||
| 		} else { | 		} else { | ||||||
| 			ctx.Data["ServiceNotEnabled"] = true | 			ctx.Data["ServiceNotEnabled"] = true | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -63,6 +63,17 @@ | |||||||
|                 <div><b>User:</b> {{.Mailer.User}}</div> |                 <div><b>User:</b> {{.Mailer.User}}</div> | ||||||
|             </div> |             </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> | ||||||
| </div> | </div> | ||||||
| {{template "base/footer" .}} | {{template "base/footer" .}} | ||||||
| @@ -6,6 +6,8 @@ | |||||||
|         {{if .IsActivatePage}} |         {{if .IsActivatePage}} | ||||||
|             {{if .ServiceNotEnabled}} |             {{if .ServiceNotEnabled}} | ||||||
|             <p>Sorry, Register Mail Confirmation has been disabled.</p> |             <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}} |             {{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> |             <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/> |             <hr/> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user