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  }