forked from NYANDEV/forgejo
Fix 500 error if there is a name conflict when edit authentication source (#23832)
This commit is contained in:
parent
7df036f1a5
commit
6e58f8400e
2 changed files with 12 additions and 3 deletions
|
@ -317,7 +317,14 @@ func UpdateSource(source *Source) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err := db.GetEngine(db.DefaultContext).ID(source.ID).AllCols().Update(source)
|
has, err := db.GetEngine(db.DefaultContext).Where("name=? AND id!=?", source.Name, source.ID).Exist(new(Source))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
} else if has {
|
||||||
|
return ErrSourceAlreadyExist{source.Name}
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = db.GetEngine(db.DefaultContext).ID(source.ID).AllCols().Update(source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -426,9 +426,11 @@ func EditAuthSourcePost(ctx *context.Context) {
|
||||||
source.IsActive = form.IsActive
|
source.IsActive = form.IsActive
|
||||||
source.IsSyncEnabled = form.IsSyncEnabled
|
source.IsSyncEnabled = form.IsSyncEnabled
|
||||||
source.Cfg = config
|
source.Cfg = config
|
||||||
// FIXME: if the name conflicts, it will result in 500: Error 1062: Duplicate entry 'aa' for key 'login_source.UQE_login_source_name'
|
|
||||||
if err := auth.UpdateSource(source); err != nil {
|
if err := auth.UpdateSource(source); err != nil {
|
||||||
if oauth2.IsErrOpenIDConnectInitialize(err) {
|
if auth.IsErrSourceAlreadyExist(err) {
|
||||||
|
ctx.Data["Err_Name"] = true
|
||||||
|
ctx.RenderWithErr(ctx.Tr("admin.auths.login_source_exist", err.(auth.ErrSourceAlreadyExist).Name), tplAuthEdit, form)
|
||||||
|
} else if oauth2.IsErrOpenIDConnectInitialize(err) {
|
||||||
ctx.Flash.Error(err.Error(), true)
|
ctx.Flash.Error(err.Error(), true)
|
||||||
ctx.Data["Err_DiscoveryURL"] = true
|
ctx.Data["Err_DiscoveryURL"] = true
|
||||||
ctx.HTML(http.StatusOK, tplAuthEdit)
|
ctx.HTML(http.StatusOK, tplAuthEdit)
|
||||||
|
|
Loading…
Reference in a new issue