summaryrefslogtreecommitdiffstats
path: root/modules/context/csrf.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/context/csrf.go')
-rw-r--r--modules/context/csrf.go23
1 files changed, 19 insertions, 4 deletions
diff --git a/modules/context/csrf.go b/modules/context/csrf.go
index ba0e9f6cde..8d179ca904 100644
--- a/modules/context/csrf.go
+++ b/modules/context/csrf.go
@@ -22,6 +22,7 @@ import (
"net/http"
"time"
+ "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/web/middleware"
"github.com/unknwon/com"
@@ -266,7 +267,12 @@ func Validate(ctx *Context, x CSRF) {
-1,
x.GetCookiePath(),
x.GetCookieDomain()) // FIXME: Do we need to set the Secure, httpOnly and SameSite values too?
- x.Error(ctx.Resp)
+ if middleware.IsAPIPath(ctx.Req) {
+ x.Error(ctx.Resp)
+ return
+ }
+ ctx.Flash.Error(ctx.Tr("error.invalid_csrf"))
+ ctx.Redirect(setting.AppSubURL + "/")
}
return
}
@@ -277,10 +283,19 @@ func Validate(ctx *Context, x CSRF) {
-1,
x.GetCookiePath(),
x.GetCookieDomain()) // FIXME: Do we need to set the Secure, httpOnly and SameSite values too?
- x.Error(ctx.Resp)
+ if middleware.IsAPIPath(ctx.Req) {
+ x.Error(ctx.Resp)
+ return
+ }
+ ctx.Flash.Error(ctx.Tr("error.invalid_csrf"))
+ ctx.Redirect(setting.AppSubURL + "/")
}
return
}
-
- http.Error(ctx.Resp, "Bad Request: no CSRF token present", http.StatusBadRequest)
+ if middleware.IsAPIPath(ctx.Req) {
+ http.Error(ctx.Resp, "Bad Request: no CSRF token present", http.StatusBadRequest)
+ return
+ }
+ ctx.Flash.Error(ctx.Tr("error.missing_csrf"))
+ ctx.Redirect(setting.AppSubURL + "/")
}