@@ -12,6 +12,7 @@ import (
1212 "code.gitea.io/gitea/models"
1313 "code.gitea.io/gitea/modules/log"
1414 "code.gitea.io/gitea/modules/setting"
15+ "code.gitea.io/gitea/modules/web/middleware"
1516
1617 gouuid "github.com/google/uuid"
1718)
@@ -69,13 +70,21 @@ func (r *ReverseProxy) VerifyAuthData(req *http.Request, w http.ResponseWriter,
6970
7071 user , err := models .GetUserByName (username )
7172 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
7476 }
75- log .Error ("GetUserByName: %v" , err )
76- return nil
77+ user = r .newUser (req )
7778 }
7879
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+
7988 log .Trace ("ReverseProxy Authorization: Logged in user %-v" , user )
8089 return user
8190}
@@ -104,13 +113,13 @@ func (r *ReverseProxy) newUser(req *http.Request) *models.User {
104113 user := & models.User {
105114 Name : username ,
106115 Email : email ,
107- Passwd : username ,
108116 IsActive : true ,
109117 }
110118 if err := models .CreateUser (user ); err != nil {
111119 // FIXME: should I create a system notice?
112120 log .Error ("CreateUser: %v" , err )
113121 return nil
114122 }
123+
115124 return user
116125}
0 commit comments