mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Fix 500 error if there is a name conflict when edit authentication source (#23832)
This commit is contained in:
		@@ -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)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user