@@ -12,6 +12,7 @@ import (
12
12
"code.gitea.io/gitea/models"
13
13
"code.gitea.io/gitea/modules/log"
14
14
"code.gitea.io/gitea/modules/setting"
15
+ "code.gitea.io/gitea/modules/web/middleware"
15
16
16
17
gouuid "github.com/google/uuid"
17
18
)
@@ -69,13 +70,21 @@ func (r *ReverseProxy) VerifyAuthData(req *http.Request, w http.ResponseWriter,
69
70
70
71
user , err := models .GetUserByName (username )
71
72
if err != nil {
72
- if models .IsErrUserNotExist (err ) && r .isAutoRegisterAllowed () {
73
- return r .newUser (req )
73
+ if ! models .IsErrUserNotExist (err ) || ! r .isAutoRegisterAllowed () {
74
+ log .Error ("GetUserByName: %v" , err )
75
+ return nil
74
76
}
75
- log .Error ("GetUserByName: %v" , err )
76
- return nil
77
+ user = r .newUser (req )
77
78
}
78
79
80
+ // Make sure requests to API paths, attachment downloads, git and LFS do not create a new session
81
+ if ! middleware .IsAPIPath (req ) && ! isAttachmentDownload (req ) && ! isGitOrLFSPath (req ) {
82
+ if sess .Get ("uid" ).(int64 ) != user .ID {
83
+ handleSignIn (w , req , sess , user )
84
+ }
85
+ }
86
+ store .GetData ()["IsReverseProxy" ] = true
87
+
79
88
log .Trace ("ReverseProxy Authorization: Logged in user %-v" , user )
80
89
return user
81
90
}
@@ -104,13 +113,13 @@ func (r *ReverseProxy) newUser(req *http.Request) *models.User {
104
113
user := & models.User {
105
114
Name : username ,
106
115
Email : email ,
107
- Passwd : username ,
108
116
IsActive : true ,
109
117
}
110
118
if err := models .CreateUser (user ); err != nil {
111
119
// FIXME: should I create a system notice?
112
120
log .Error ("CreateUser: %v" , err )
113
121
return nil
114
122
}
123
+
115
124
return user
116
125
}
0 commit comments