@@ -24,6 +24,7 @@ import (
24
24
"code.gitea.io/gitea/modules/setting"
25
25
"code.gitea.io/gitea/modules/timeutil"
26
26
"code.gitea.io/gitea/modules/web"
27
+ "code.gitea.io/gitea/modules/web/middleware"
27
28
"code.gitea.io/gitea/routers/utils"
28
29
"code.gitea.io/gitea/services/externalaccount"
29
30
"code.gitea.io/gitea/services/mailer"
@@ -64,8 +65,8 @@ func AutoSignIn(ctx *context.Context) (bool, error) {
64
65
defer func () {
65
66
if ! isSucceed {
66
67
log .Trace ("auto-login cookie cleared: %s" , uname )
67
- ctx .SetCookie (setting .CookieUserName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true )
68
- ctx .SetCookie (setting .CookieRememberName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true )
68
+ ctx .SetCookie (setting .CookieUserName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true , middleware . SameSiteString ( setting . SessionConfig . SameSite ) )
69
+ ctx .SetCookie (setting .CookieRememberName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true , middleware . SameSiteString ( setting . SessionConfig . SameSite ) )
69
70
}
70
71
}()
71
72
@@ -95,7 +96,7 @@ func AutoSignIn(ctx *context.Context) (bool, error) {
95
96
return false , err
96
97
}
97
98
98
- ctx .SetCookie (setting .CSRFCookieName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true )
99
+ ctx .SetCookie (setting .CSRFCookieName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true , middleware . SameSiteString ( setting . SessionConfig . SameSite ) )
99
100
return true , nil
100
101
}
101
102
@@ -109,13 +110,13 @@ func checkAutoLogin(ctx *context.Context) bool {
109
110
110
111
redirectTo := ctx .Query ("redirect_to" )
111
112
if len (redirectTo ) > 0 {
112
- ctx .SetCookie ("redirect_to" , redirectTo , 0 , setting .AppSubURL , "" , setting .SessionConfig .Secure , true )
113
+ ctx .SetCookie ("redirect_to" , redirectTo , 0 , setting .AppSubURL , "" , setting .SessionConfig .Secure , true , middleware . SameSiteString ( setting . SessionConfig . SameSite ) )
113
114
} else {
114
115
redirectTo = ctx .GetCookie ("redirect_to" )
115
116
}
116
117
117
118
if isSucceed {
118
- ctx .SetCookie ("redirect_to" , "" , - 1 , setting .AppSubURL , "" , setting .SessionConfig .Secure , true )
119
+ ctx .SetCookie ("redirect_to" , "" , - 1 , setting .AppSubURL , "" , setting .SessionConfig .Secure , true , middleware . SameSiteString ( setting . SessionConfig . SameSite ) )
119
120
ctx .RedirectToFirst (redirectTo , setting .AppSubURL + string (setting .LandingPageURL ))
120
121
return true
121
122
}
@@ -497,9 +498,9 @@ func handleSignIn(ctx *context.Context, u *models.User, remember bool) {
497
498
func handleSignInFull (ctx * context.Context , u * models.User , remember bool , obeyRedirect bool ) string {
498
499
if remember {
499
500
days := 86400 * setting .LogInRememberDays
500
- ctx .SetCookie (setting .CookieUserName , u .Name , days , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true )
501
+ ctx .SetCookie (setting .CookieUserName , u .Name , days , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true , middleware . SameSiteString ( setting . SessionConfig . SameSite ) )
501
502
ctx .SetSuperSecureCookie (base .EncodeMD5 (u .Rands + u .Passwd ),
502
- setting .CookieRememberName , u .Name , days , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true )
503
+ setting .CookieRememberName , u .Name , days , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true , middleware . SameSiteString ( setting . SessionConfig . SameSite ) )
503
504
}
504
505
505
506
_ = ctx .Session .Delete ("openid_verified_uri" )
@@ -530,10 +531,10 @@ func handleSignInFull(ctx *context.Context, u *models.User, remember bool, obeyR
530
531
}
531
532
}
532
533
533
- ctx .SetCookie ("lang" , u .Language , nil , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true )
534
+ ctx .SetCookie ("lang" , u .Language , nil , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true , middleware . SameSiteString ( setting . SessionConfig . SameSite ) )
534
535
535
536
// Clear whatever CSRF has right now, force to generate a new one
536
- ctx .SetCookie (setting .CSRFCookieName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true )
537
+ ctx .SetCookie (setting .CSRFCookieName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true , middleware . SameSiteString ( setting . SessionConfig . SameSite ) )
537
538
538
539
// Register last login
539
540
u .SetLastLogin ()
@@ -543,7 +544,7 @@ func handleSignInFull(ctx *context.Context, u *models.User, remember bool, obeyR
543
544
}
544
545
545
546
if redirectTo := ctx .GetCookie ("redirect_to" ); len (redirectTo ) > 0 && ! utils .IsExternalURL (redirectTo ) {
546
- ctx .SetCookie ("redirect_to" , "" , - 1 , setting .AppSubURL , "" , setting .SessionConfig .Secure , true )
547
+ ctx .SetCookie ("redirect_to" , "" , - 1 , setting .AppSubURL , "" , setting .SessionConfig .Secure , true , middleware . SameSiteString ( setting . SessionConfig . SameSite ) )
547
548
if obeyRedirect {
548
549
ctx .RedirectToFirst (redirectTo )
549
550
}
@@ -649,7 +650,7 @@ func handleOAuth2SignIn(u *models.User, gothUser goth.User, ctx *context.Context
649
650
}
650
651
651
652
// Clear whatever CSRF has right now, force to generate a new one
652
- ctx .SetCookie (setting .CSRFCookieName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true )
653
+ ctx .SetCookie (setting .CSRFCookieName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true , middleware . SameSiteString ( setting . SessionConfig . SameSite ) )
653
654
654
655
// Register last login
655
656
u .SetLastLogin ()
@@ -664,7 +665,7 @@ func handleOAuth2SignIn(u *models.User, gothUser goth.User, ctx *context.Context
664
665
}
665
666
666
667
if redirectTo := ctx .GetCookie ("redirect_to" ); len (redirectTo ) > 0 {
667
- ctx .SetCookie ("redirect_to" , "" , - 1 , setting .AppSubURL , "" , setting .SessionConfig .Secure , true )
668
+ ctx .SetCookie ("redirect_to" , "" , - 1 , setting .AppSubURL , "" , setting .SessionConfig .Secure , true , middleware . SameSiteString ( setting . SessionConfig . SameSite ) )
668
669
ctx .RedirectToFirst (redirectTo )
669
670
return
670
671
}
@@ -1042,11 +1043,11 @@ func LinkAccountPostRegister(ctx *context.Context) {
1042
1043
func HandleSignOut (ctx * context.Context ) {
1043
1044
_ = ctx .Session .Flush ()
1044
1045
_ = ctx .Session .Destroy (ctx .Resp , ctx .Req )
1045
- ctx .SetCookie (setting .CookieUserName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true )
1046
- ctx .SetCookie (setting .CookieRememberName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true )
1047
- ctx .SetCookie (setting .CSRFCookieName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true )
1048
- ctx .SetCookie ("lang" , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true ) // Setting the lang cookie will trigger the middleware to reset the language ot previous state.
1049
- ctx .SetCookie ("redirect_to" , "" , - 1 , setting .AppSubURL ) // logout default should set redirect to to default
1046
+ ctx .SetCookie (setting .CookieUserName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true , middleware . SameSiteString ( setting . SessionConfig . SameSite ) )
1047
+ ctx .SetCookie (setting .CookieRememberName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true , middleware . SameSiteString ( setting . SessionConfig . SameSite ) )
1048
+ ctx .SetCookie (setting .CSRFCookieName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true , middleware . SameSiteString ( setting . SessionConfig . SameSite ) )
1049
+ ctx .SetCookie ("lang" , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true , middleware . SameSiteString ( setting . SessionConfig . SameSite ) ) // Setting the lang cookie will trigger the middleware to reset the language ot previous state.
1050
+ ctx .SetCookie ("redirect_to" , "" , - 1 , setting .AppSubURL ) // logout default should set redirect to to default
1050
1051
}
1051
1052
1052
1053
// SignOut sign out from login status
0 commit comments