@@ -181,6 +181,28 @@ func (s service) InitiateSignRequest(ctx context.Context, req *http.Request, git
181181 return & consoleURL , nil
182182}
183183
184+ func (s service ) refreshGitLabUserName (ctx context.Context , claUser * models.User , gitlabUser * gitlab.User ) * models.User {
185+ if claUser == nil || gitlabUser == nil || gitlabUser .Name == "" || claUser .Username == gitlabUser .Name {
186+ return claUser
187+ }
188+
189+ updatedUser , err := s .userService .UpdateUser (claUser .UserID , map [string ]interface {}{
190+ "user_name" : gitlabUser .Name ,
191+ "date_modified" : time .Now ().UTC ().Format (time .RFC3339 ),
192+ })
193+ if err != nil {
194+ log .WithFields (logrus.Fields {
195+ "functionName" : "v2.gitlab_sign.service.refreshGitLabUserName" ,
196+ utils .XREQUESTID : ctx .Value (utils .XREQUESTID ),
197+ "userID" : claUser .UserID ,
198+ "gitlabUserID" : gitlabUser .ID ,
199+ }).WithError (err ).Warn ("unable to refresh stored GitLab user_name" )
200+ return claUser
201+ }
202+
203+ return updatedUser
204+ }
205+
184206func (s service ) getOrCreateUser (ctx context.Context , gitlabClient * gitlab.Client , eventsService events.Service ) (* models.User , error ) {
185207 f := logrus.Fields {
186208 "functionName" : "v2.gitlab_sign.service.getOrCreateUser" ,
@@ -197,23 +219,23 @@ func (s service) getOrCreateUser(ctx context.Context, gitlabClient *gitlab.Clien
197219 claUser , err := s .userService .GetUserByGitlabID (gitlabUser .ID )
198220 if err == nil && claUser != nil {
199221 log .WithFields (f ).Debugf ("found user by GitLab ID: %d" , gitlabUser .ID )
200- return claUser , nil
222+ return s . refreshGitLabUserName ( ctx , claUser , gitlabUser ) , nil
201223 }
202- log .WithFields (f ).Debugf ("unable to lookup user by github ID: %d, error: %+v " , gitlabUser .ID , err )
224+ log .WithFields (f ).Debugf ("unable to lookup user by GitLab ID: %d, error: %+v " , gitlabUser .ID , err )
203225
204226 log .WithFields (f ).Debugf ("looking up user by GitLab username: %s" , gitlabUser .Username )
205227 claUser , err = s .userService .GetUserByGitLabUsername (gitlabUser .Username )
206228 if err == nil && claUser != nil {
207229 log .WithFields (f ).Debugf ("found user by GitLab username: %s" , gitlabUser .Username )
208- return claUser , nil
230+ return s . refreshGitLabUserName ( ctx , claUser , gitlabUser ) , nil
209231 }
210- log .WithFields (f ).Debugf ("unable to lookup user by github username: %s, error: %+v " , gitlabUser .Username , err )
232+ log .WithFields (f ).Debugf ("unable to lookup user by GitLab username: %s, error: %+v " , gitlabUser .Username , err )
211233
212234 log .WithFields (f ).Debugf ("looking up user by GitLab email: %s" , gitlabUser .Email )
213235 claUser , err = s .userService .GetUserByEmail (gitlabUser .Email )
214236 if err == nil && claUser != nil {
215237 log .WithFields (f ).Debugf ("found user by GitLab email: %s" , gitlabUser .Email )
216- return claUser , nil
238+ return s . refreshGitLabUserName ( ctx , claUser , gitlabUser ) , nil
217239 }
218240
219241 log .WithFields (f ).Infof ("unable to locate GitLab user - creating a new user record for GitLab user : %+v " , gitlabUser )
@@ -225,8 +247,8 @@ func (s service) getOrCreateUser(ctx context.Context, gitlabClient *gitlab.Clien
225247 Username : gitlabUser .Name ,
226248 }
227249 claUser , userErr := s .userService .CreateUser (user , nil )
228- if err != nil {
229- log .WithFields (f ).Debugf ("unable to create claUser with details : %+v, error: %+v" , user , userErr )
250+ if userErr != nil {
251+ log .WithFields (f ).Debugf ("unable to create claUser with details: %+v, error: %+v" , user , userErr )
230252 return nil , userErr
231253 }
232254
0 commit comments