mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Add Password Algorithm option to install page (#14701)
Add Password Algorithm option to install page Fix #14674 Co-authored-by: John Olheiser <john.olheiser@gmail.com>
This commit is contained in:
		| @@ -56,7 +56,17 @@ const ( | ||||
| 	algoScrypt = "scrypt" | ||||
| 	algoArgon2 = "argon2" | ||||
| 	algoPbkdf2 = "pbkdf2" | ||||
| ) | ||||
|  | ||||
| // AvailableHashAlgorithms represents the available password hashing algorithms | ||||
| var AvailableHashAlgorithms = []string{ | ||||
| 	algoPbkdf2, | ||||
| 	algoArgon2, | ||||
| 	algoScrypt, | ||||
| 	algoBcrypt, | ||||
| } | ||||
|  | ||||
| const ( | ||||
| 	// EmailNotificationsEnabled indicates that the user would like to receive all email notifications | ||||
| 	EmailNotificationsEnabled = "enabled" | ||||
| 	// EmailNotificationsOnMention indicates that the user would like to be notified via email when mentioned. | ||||
|   | ||||
| @@ -60,6 +60,8 @@ type InstallForm struct { | ||||
| 	DefaultEnableTimetracking      bool | ||||
| 	NoReplyAddress                 string | ||||
|  | ||||
| 	PasswordAlgorithm string | ||||
|  | ||||
| 	AdminName          string `binding:"OmitEmpty;AlphaDashDot;MaxSize(30)" locale:"install.admin_name"` | ||||
| 	AdminPasswd        string `binding:"OmitEmpty;MaxSize(255)" locale:"install.admin_password"` | ||||
| 	AdminConfirmPasswd string | ||||
|   | ||||
| @@ -205,6 +205,8 @@ default_enable_timetracking = Enable Time Tracking by Default | ||||
| default_enable_timetracking_popup = Enable time tracking for new repositories by default. | ||||
| no_reply_address = Hidden Email Domain | ||||
| no_reply_address_helper = Domain name for users with a hidden email address. For example, the username 'joe' will be logged in Git as 'joe@noreply.example.org' if the hidden email domain is set to 'noreply.example.org'. | ||||
| password_algorithm = Password Hash Algorithm | ||||
| password_algorithm_helper = Set the password hashing algorithm. Algorithms have differing requirements and strength. `argon2` whilst having good characteristics uses a lot of memory and may be inappropriate for small systems. | ||||
|  | ||||
| [home] | ||||
| uname_holder = Username or Email Address | ||||
|   | ||||
| @@ -66,6 +66,7 @@ func InstallInit(next http.Handler) http.Handler { | ||||
| 				"TmplLoadTimes": func() string { | ||||
| 					return time.Since(startTime).String() | ||||
| 				}, | ||||
| 				"PasswordHashAlgorithms": models.AvailableHashAlgorithms, | ||||
| 			}, | ||||
| 		} | ||||
| 		ctx.Req = context.WithContext(req, &ctx) | ||||
| @@ -142,6 +143,7 @@ func Install(ctx *context.Context) { | ||||
| 	form.DefaultAllowCreateOrganization = setting.Service.DefaultAllowCreateOrganization | ||||
| 	form.DefaultEnableTimetracking = setting.Service.DefaultEnableTimetracking | ||||
| 	form.NoReplyAddress = setting.Service.NoReplyAddress | ||||
| 	form.PasswordAlgorithm = setting.PasswordHashAlgo | ||||
|  | ||||
| 	middleware.AssignForm(form, ctx.Data) | ||||
| 	ctx.HTML(200, tplInstall) | ||||
| @@ -185,6 +187,8 @@ func InstallPost(ctx *context.Context) { | ||||
| 	setting.Database.Charset = form.Charset | ||||
| 	setting.Database.Path = form.DbPath | ||||
|  | ||||
| 	setting.PasswordHashAlgo = form.PasswordAlgorithm | ||||
|  | ||||
| 	if (setting.Database.Type == "sqlite3") && | ||||
| 		len(setting.Database.Path) == 0 { | ||||
| 		ctx.Data["Err_DbPath"] = true | ||||
| @@ -380,6 +384,9 @@ func InstallPost(ctx *context.Context) { | ||||
| 		return | ||||
| 	} | ||||
| 	cfg.Section("security").Key("SECRET_KEY").SetValue(secretKey) | ||||
| 	if len(form.PasswordAlgorithm) > 0 { | ||||
| 		cfg.Section("security").Key("PASSWORD_HASH_ALGO").SetValue(form.PasswordAlgorithm) | ||||
| 	} | ||||
|  | ||||
| 	err = os.MkdirAll(filepath.Dir(setting.CustomConf), os.ModePerm) | ||||
| 	if err != nil { | ||||
|   | ||||
| @@ -267,6 +267,20 @@ | ||||
| 								<input id="_no_reply_address" name="no_reply_address" value="{{.no_reply_address}}"> | ||||
| 								<span class="help">{{.i18n.Tr "install.no_reply_address_helper"}}</span> | ||||
| 							</div> | ||||
| 							<div class="inline field"> | ||||
| 								<label for="password_algorithm">{{.i18n.Tr "install.password_algorithm"}}</label> | ||||
| 								<div class="ui selection dropdown"> | ||||
| 									<input id="password_algorithm" type="hidden" name="password_algorithm" value="{{.password_algorithm}}"> | ||||
| 									<div class="text">{{.password_algorithm}}</div> | ||||
| 									{{svg "octicon-triangle-down" 14 "dropdown icon"}} | ||||
| 									<div class="menu"> | ||||
| 										{{range .PasswordHashAlgorithms}} | ||||
| 											<div class="item" data-value="{{.}}">{{.}}</div> | ||||
| 										{{end}} | ||||
| 									</div> | ||||
| 								</div> | ||||
| 								<span class="help">{{.i18n.Tr "install.password_algorithm_helper"}}</span> | ||||
| 							</div> | ||||
| 						</div> | ||||
| 					</div> | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user