@@ -63,22 +63,32 @@ func (r *ReverseProxy) IsEnabled() bool {
63
63
// user object is returned (populated with username or email found in header).
64
64
// Returns nil if header is empty.
65
65
func (r * ReverseProxy ) VerifyAuthData (ctx * macaron.Context , sess session.Store ) * models.User {
66
+
67
+ // Just return user if session is estabilshed already.
68
+ user := SessionUser (sess )
69
+ if user != nil {
70
+ return user
71
+ }
72
+
73
+ // If no session established, get username from header.
66
74
username := r .getUserName (ctx )
67
75
if len (username ) == 0 {
68
76
return nil
69
77
}
70
78
71
- var user * models.User
72
79
var err error
73
80
74
81
if r .isAutoRegisterAllowed () {
75
82
// Use auto registration from reverse proxy if ENABLE_REVERSE_PROXY_AUTO_REGISTRATION enabled.
76
83
if user , err = models .GetUserByName (username ); err != nil {
77
84
if models .IsErrUserNotExist (err ) && r .isAutoRegisterAllowed () {
78
- return r .newUser (ctx )
85
+ if user = r .newUser (ctx ); user == nil {
86
+ return nil
87
+ }
88
+ } else {
89
+ log .Error ("GetUserByName: %v" , err )
90
+ return nil
79
91
}
80
- log .Error ("GetUserByName: %v" , err )
81
- return nil
82
92
}
83
93
} else {
84
94
// Use auto registration from other backends if ENABLE_REVERSE_PROXY_AUTO_REGISTRATION not enabled.
@@ -90,20 +100,9 @@ func (r *ReverseProxy) VerifyAuthData(ctx *macaron.Context, sess session.Store)
90
100
}
91
101
}
92
102
93
- // If the user does not have a locale set, we save the current one.
94
- if len (user .Language ) == 0 {
95
- user .Language = ctx .Locale .Language ()
96
- if err = models .UpdateUserCols (user , "language" ); err != nil {
97
- log .Error (fmt .Sprintf ("VerifyAuthData: error updating user language [user: %d, locale: %s]" , user .ID , user .Language ))
98
- }
99
- }
100
-
101
- ctx .SetCookie ("lang" , user .Language , nil , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true )
102
-
103
- // Clear whatever CSRF has right now, force to generate a new one.
104
- ctx .SetCookie (setting .CSRFCookieName , "" , - 1 , setting .AppSubURL , setting .SessionConfig .Domain , setting .SessionConfig .Secure , true )
103
+ // Initialize new session.
104
+ handleSignIn (ctx , sess , user )
105
105
106
- // Register last login.
107
106
user .SetLastLogin ()
108
107
if err = models .UpdateUserCols (user , false , "last_login_unix" ); err != nil {
109
108
log .Error (fmt .Sprintf ("VerifyAuthData: error updating user last login time [user: %d]" , user .ID ))
0 commit comments