You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

source.go 1005B

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