mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	Add more descriptive error on forgot password page (#26848)
## Changes - Forces flashed error to render immediately when forgot password code is incorrect or has expired. - Adds a link back to the `forgot_password` page so that the user can restart the process (in the event that their link has expired)
This commit is contained in:
		| @@ -379,6 +379,7 @@ email_not_associate = The email address is not associated with any account. | |||||||
| send_reset_mail = Send Account Recovery Email | send_reset_mail = Send Account Recovery Email | ||||||
| reset_password = Account Recovery | reset_password = Account Recovery | ||||||
| invalid_code = Your confirmation code is invalid or has expired. | invalid_code = Your confirmation code is invalid or has expired. | ||||||
|  | invalid_code_forgot_password = Your confirmation code is invalid or has expired. Click <a href="%s">here</a> to start a new session. | ||||||
| invalid_password = Your password does not match the password that was used to create the account. | invalid_password = Your password does not match the password that was used to create the account. | ||||||
| reset_password_helper = Recover Account | reset_password_helper = Recover Account | ||||||
| reset_password_wrong_user = You are signed in as %s, but the account recovery link is meant for %s | reset_password_wrong_user = You are signed in as %s, but the account recovery link is meant for %s | ||||||
|   | |||||||
| @@ -5,6 +5,7 @@ package auth | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"errors" | 	"errors" | ||||||
|  | 	"fmt" | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  |  | ||||||
| 	"code.gitea.io/gitea/models/auth" | 	"code.gitea.io/gitea/models/auth" | ||||||
| @@ -108,14 +109,14 @@ func commonResetPassword(ctx *context.Context) (*user_model.User, *auth.TwoFacto | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if len(code) == 0 { | 	if len(code) == 0 { | ||||||
| 		ctx.Flash.Error(ctx.Tr("auth.invalid_code")) | 		ctx.Flash.Error(ctx.Tr("auth.invalid_code_forgot_password", fmt.Sprintf("%s/user/forgot_password", setting.AppSubURL)), true) | ||||||
| 		return nil, nil | 		return nil, nil | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// Fail early, don't frustrate the user | 	// Fail early, don't frustrate the user | ||||||
| 	u := user_model.VerifyUserActiveCode(code) | 	u := user_model.VerifyUserActiveCode(code) | ||||||
| 	if u == nil { | 	if u == nil { | ||||||
| 		ctx.Flash.Error(ctx.Tr("auth.invalid_code")) | 		ctx.Flash.Error(ctx.Tr("auth.invalid_code_forgot_password", fmt.Sprintf("%s/user/forgot_password", setting.AppSubURL)), true) | ||||||
| 		return nil, nil | 		return nil, nil | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -134,7 +135,7 @@ func commonResetPassword(ctx *context.Context) (*user_model.User, *auth.TwoFacto | |||||||
| 	ctx.Data["user_email"] = u.Email | 	ctx.Data["user_email"] = u.Email | ||||||
|  |  | ||||||
| 	if nil != ctx.Doer && u.ID != ctx.Doer.ID { | 	if nil != ctx.Doer && u.ID != ctx.Doer.ID { | ||||||
| 		ctx.Flash.Error(ctx.Tr("auth.reset_password_wrong_user", ctx.Doer.Email, u.Email)) | 		ctx.Flash.Error(ctx.Tr("auth.reset_password_wrong_user", ctx.Doer.Email, u.Email), true) | ||||||
| 		return nil, nil | 		return nil, nil | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -57,7 +57,7 @@ | |||||||
| 							{{end}} | 							{{end}} | ||||||
| 						</div> | 						</div> | ||||||
| 					{{else}} | 					{{else}} | ||||||
| 						<p class="center">{{.locale.Tr "auth.invalid_code"}}</p> | 						<p class="center">{{.locale.Tr "auth.invalid_code_forgot_password" (printf "%s/user/forgot_password" AppSubUrl) | Str2html}}</p> | ||||||
| 					{{end}} | 					{{end}} | ||||||
| 				</div> | 				</div> | ||||||
| 			</form> | 			</form> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user