From 15a475b7dbcf7923d9518dff7764b20e404eb774 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 5 Jan 2021 21:05:40 +0800 Subject: Fix recovery middleware to render gitea style page. (#13857) * Some changes to fix recovery * Move Recovery to middlewares * Remove trace code * Fix lint * add session middleware and remove dependent on macaron for sso * Fix panic 500 page rendering * Fix bugs * Fix fmt * Fix vendor * recover unnecessary change * Fix lint and addd some comments about the copied codes. * Use util.StatDir instead of com.StatDir Co-authored-by: 6543 <6543@obermui.de> --- modules/context/context.go | 8 +++++++- modules/context/panic.go | 41 ----------------------------------------- 2 files changed, 7 insertions(+), 42 deletions(-) delete mode 100644 modules/context/panic.go (limited to 'modules/context') diff --git a/modules/context/context.go b/modules/context/context.go index 2e43088ff8..c35a19480a 100644 --- a/modules/context/context.go +++ b/modules/context/context.go @@ -17,6 +17,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" + "code.gitea.io/gitea/modules/auth/sso" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" @@ -48,6 +49,11 @@ type Context struct { Org *Organization } +// GetData returns the data +func (ctx *Context) GetData() map[string]interface{} { + return ctx.Data +} + // IsUserSiteAdmin returns true if current user is a site admin func (ctx *Context) IsUserSiteAdmin() bool { return ctx.IsSigned && ctx.User.IsAdmin @@ -303,7 +309,7 @@ func Contexter() macaron.Handler { } // Get user from session if logged in. - ctx.User, ctx.IsBasicAuth = auth.SignedInUser(ctx.Context, ctx.Session) + ctx.User, ctx.IsBasicAuth = sso.SignedInUser(ctx.Req.Request, ctx, ctx.Session) if ctx.User != nil { ctx.IsSigned = true diff --git a/modules/context/panic.go b/modules/context/panic.go deleted file mode 100644 index e5ef233629..0000000000 --- a/modules/context/panic.go +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2013 Martini Authors -// Copyright 2014 The Macaron Authors -// Copyright 2019 The Gitea Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"): you may -// not use this file except in compliance with the License. You may obtain -// a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -// License for the specific language governing permissions and limitations -// under the License. - -package context - -import ( - "fmt" - - "code.gitea.io/gitea/modules/log" - - "gitea.com/macaron/macaron" -) - -// Recovery returns a middleware that recovers from any panics and writes a 500 and a log if so. -// Although similar to macaron.Recovery() the main difference is that this error will be created -// with the gitea 500 page. -func Recovery() macaron.Handler { - return func(ctx *Context) { - defer func() { - if err := recover(); err != nil { - combinedErr := fmt.Errorf("%s\n%s", err, log.Stack(2)) - ctx.ServerError("PANIC:", combinedErr) - } - }() - - ctx.Next() - } -} -- cgit v1.2.3