From bf0a9455ce5734c6f92bdaceb7cfb1328f5fccba Mon Sep 17 00:00:00 2001 From: qwerty287 <80460567+qwerty287@users.noreply.github.com> Date: Wed, 21 Feb 2024 19:56:37 +0100 Subject: [PATCH] Update org name on login (#3409) and create a new org once a user is created (logged in for the first time) closes https://github.com/woodpecker-ci/woodpecker/issues/3342 --------- Co-authored-by: Anbraten <6918444+anbraten@users.noreply.github.com> Co-authored-by: 6543 <6543@obermui.de> --- server/api/login.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/server/api/login.go b/server/api/login.go index 3dcdbbfa5..8e72285dc 100644 --- a/server/api/login.go +++ b/server/api/login.go @@ -116,9 +116,38 @@ func HandleAuth(c *gin.Context) { // the user was stored as org. now we adopt it to the user. if org, err := _store.OrgFindByName(u.Login); err == nil && org != nil { org.IsUser = true + u.OrgID = org.ID if err := _store.OrgUpdate(org); err != nil { log.Error().Err(err).Msgf("on user creation, could not mark org as user") } + } else { + if err != nil && !errors.Is(err, types.RecordNotExist) { + _ = c.AbortWithError(http.StatusInternalServerError, err) + return + } + org = &model.Org{ + Name: u.Login, + IsUser: true, + Private: false, + } + if err := _store.OrgCreate(org); err != nil { + log.Error().Err(err).Msgf("on user creation, could create org for user") + } + u.OrgID = org.ID + } + } + + // update org name + if u.Login != tmpuser.Login { + org, err := _store.OrgGet(u.OrgID) + if err != nil { + log.Error().Err(err).Msgf("cannot get org %s", u.Login) + c.Redirect(http.StatusSeeOther, server.Config.Server.RootPath+"/login?error=internal_error") + return + } + org.Name = u.Login + if err := _store.OrgUpdate(org); err != nil { + log.Error().Err(err).Msgf("on user creation, could not mark org as user") } }