fix org assign on login

This commit is contained in:
Anbraten 2025-02-07 08:40:43 +01:00
parent 06166065c6
commit ee884344d0
No known key found for this signature in database
GPG key ID: B1222603899C6B25
2 changed files with 19 additions and 14 deletions

View file

@ -110,7 +110,7 @@ func HandleAuth(c *gin.Context) {
_forge, err := server.Config.Services.Manager.ForgeByID(forgeID)
if err != nil {
log.Error().Err(err).Msgf("Cannot get forge by id %d", forgeID)
log.Error().Err(err).Msgf("cannot get forge by id %d", forgeID)
c.Redirect(http.StatusSeeOther, server.Config.Server.RootPath+"/login?error=internal_error")
return
}
@ -183,21 +183,26 @@ func HandleAuth(c *gin.Context) {
// create or set the user's organization if it isn't linked yet
if user.OrgID == 0 {
// check if an org with the same name exists already and assign it to the user if it does
if org, err := _store.OrgFindByName(user.Login); err == nil && org != nil {
org.IsUser = true
user.OrgID = org.ID
if err := _store.OrgUpdate(org); err != nil {
log.Error().Err(err).Msgf("on user creation, could not mark org as user")
}
}
// TODO: find the org by name and forgeID directly
org, err := _store.OrgFindByName(user.Login)
if err != nil && !errors.Is(err, types.RecordNotExist) {
log.Error().Err(err).Msgf("cannot get org %s", user.Login)
c.Redirect(http.StatusSeeOther, server.Config.Server.RootPath+"/login?error=internal_error")
return
}
if user.OrgID == 0 {
// if an org with the same name exists => assign org to the user
if err == nil && org != nil {
org.IsUser = true
user.OrgID = org.ID
if err := _store.OrgUpdate(org); err != nil {
log.Error().Err(err).Msgf("on login, could not assign user to existing org")
}
}
// if no org with the same name exists => create a new org
if user.OrgID == 0 || errors.Is(err, types.RecordNotExist) {
org := &model.Org{
Name: user.Login,
IsUser: true,
@ -205,7 +210,7 @@ func HandleAuth(c *gin.Context) {
ForgeID: user.ForgeID,
}
if err := _store.OrgCreate(org); err != nil {
log.Error().Err(err).Msgf("on user creation, could not create org for user")
log.Error().Err(err).Msgf("on login, could not create org for user")
}
user.OrgID = org.ID
}
@ -220,7 +225,7 @@ func HandleAuth(c *gin.Context) {
if org != nil && org.Name != user.Login {
org.Name = user.Login
if err := _store.OrgUpdate(org); err != nil {
log.Error().Err(err).Msgf("on user creation, could not mark org as user")
log.Error().Err(err).Msgf("on login, could not update org %d name to user name %s", org.ID, user.Login)
}
}
}

View file

@ -31,7 +31,7 @@ func wrapGet(exist bool, err error) error {
return types.RecordNotExist
}
if err != nil {
// we only ask for the function's name if needed, as it's not as preformatted as to just execute it
// we only ask for the function's name if needed for performance reasons
fnName := callerName(2)
return fmt.Errorf("%s: %w", fnName, err)
}
@ -44,7 +44,7 @@ func wrapDelete(c int64, err error) error {
return types.RecordNotExist
}
if err != nil {
// we only ask for the function's name if needed, as it's not as preformatted as to just execute it
// we only ask for the function's name if needed for performance reasons
fnName := callerName(2)
return fmt.Errorf("%s: %w", fnName, err)
}