code.gitea.io/gitea@v1.22.3/services/auth/source.go (about) 1 // Copyright 2021 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package auth 5 6 import ( 7 "context" 8 9 "code.gitea.io/gitea/models/auth" 10 "code.gitea.io/gitea/models/db" 11 user_model "code.gitea.io/gitea/models/user" 12 ) 13 14 // DeleteSource deletes a AuthSource record in DB. 15 func DeleteSource(ctx context.Context, source *auth.Source) error { 16 count, err := db.GetEngine(ctx).Count(&user_model.User{LoginSource: source.ID}) 17 if err != nil { 18 return err 19 } else if count > 0 { 20 return auth.ErrSourceInUse{ 21 ID: source.ID, 22 } 23 } 24 25 count, err = db.GetEngine(ctx).Count(&user_model.ExternalLoginUser{LoginSourceID: source.ID}) 26 if err != nil { 27 return err 28 } else if count > 0 { 29 return auth.ErrSourceInUse{ 30 ID: source.ID, 31 } 32 } 33 34 if registerableSource, ok := source.Cfg.(auth.RegisterableSource); ok { 35 if err := registerableSource.UnregisterSource(); err != nil { 36 return err 37 } 38 } 39 40 _, err = db.GetEngine(ctx).ID(source.ID).Delete(new(auth.Source)) 41 return err 42 }