mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-31 14:31:02 +00:00 
			
		
		
		
	Backport #27856 The only conflict is `ThemeName` in `500.tmpl`, it has been resolved manually by keeping using old `{{.SignedUser.Theme}}{{else}}{{DefaultTheme}}`
This commit is contained in:
		
					parent
					
						
							
								18a782f73d
							
						
					
				
			
			
				commit
				
					
						6ac2ade97d
					
				
			
		
					 10 changed files with 33 additions and 65 deletions
				
			
		|  | @ -9,6 +9,7 @@ import ( | |||
| 
 | ||||
| 	user_model "code.gitea.io/gitea/models/user" | ||||
| 	"code.gitea.io/gitea/modules/base" | ||||
| 	"code.gitea.io/gitea/modules/context" | ||||
| 	"code.gitea.io/gitea/modules/httpcache" | ||||
| 	"code.gitea.io/gitea/modules/log" | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
|  | @ -35,20 +36,18 @@ func RenderPanicErrorPage(w http.ResponseWriter, req *http.Request, err any) { | |||
| 	httpcache.SetCacheControlInHeader(w.Header(), 0, "no-transform") | ||||
| 	w.Header().Set(`X-Frame-Options`, setting.CORSConfig.XFrameOptions) | ||||
| 
 | ||||
| 	data := middleware.GetContextData(req.Context()) | ||||
| 	if data["locale"] == nil { | ||||
| 		data = middleware.CommonTemplateContextData() | ||||
| 		data["locale"] = middleware.Locale(w, req) | ||||
| 	} | ||||
| 	tmplCtx := context.TemplateContext{} | ||||
| 	tmplCtx["Locale"] = middleware.Locale(w, req) | ||||
| 	ctxData := middleware.GetContextData(req.Context()) | ||||
| 
 | ||||
| 	// This recovery handler could be called without Gitea's web context, so we shouldn't touch that context too much. | ||||
| 	// Otherwise, the 500-page may cause new panics, eg: cache.GetContextWithData, it makes the developer&users couldn't find the original panic. | ||||
| 	user, _ := data[middleware.ContextDataKeySignedUser].(*user_model.User) | ||||
| 	user, _ := ctxData[middleware.ContextDataKeySignedUser].(*user_model.User) | ||||
| 	if !setting.IsProd || (user != nil && user.IsAdmin) { | ||||
| 		data["ErrorMsg"] = "PANIC: " + combinedErr | ||||
| 		ctxData["ErrorMsg"] = "PANIC: " + combinedErr | ||||
| 	} | ||||
| 
 | ||||
| 	err = templates.HTMLRenderer().HTML(w, http.StatusInternalServerError, string(tplStatus500), data, nil) | ||||
| 	err = templates.HTMLRenderer().HTML(w, http.StatusInternalServerError, string(tplStatus500), ctxData, tmplCtx) | ||||
| 	if err != nil { | ||||
| 		log.Error("Error occurs again when rendering error page: %v", err) | ||||
| 		w.WriteHeader(http.StatusInternalServerError) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue