feat: Add delete external user login info by user ID
This commit is contained in:
+1
-1
@@ -228,7 +228,7 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
|
||||
revisionController := controller.NewRevisionController(contentRevisionService, rankService)
|
||||
rankController := controller.NewRankController(rankService)
|
||||
userAdminRepo := user.NewUserAdminRepo(dataData, authRepo)
|
||||
userAdminService := user_admin.NewUserAdminService(userAdminRepo, userRoleRelService, authService, userCommon, userActiveActivityRepo, siteInfoCommonService, emailService, questionRepo, answerRepo, commentCommonRepo)
|
||||
userAdminService := user_admin.NewUserAdminService(userAdminRepo, userRoleRelService, authService, userCommon, userActiveActivityRepo, siteInfoCommonService, emailService, questionRepo, answerRepo, commentCommonRepo, userExternalLoginRepo)
|
||||
userAdminController := controller_admin.NewUserAdminController(userAdminService)
|
||||
reasonRepo := reason.NewReasonRepo(configService)
|
||||
reasonService := reason2.NewReasonService(reasonRepo)
|
||||
|
||||
@@ -104,6 +104,16 @@ func (ur *userExternalLoginRepo) DeleteUserExternalLogin(ctx context.Context, us
|
||||
return
|
||||
}
|
||||
|
||||
// DeleteUserExternalLoginByUserID delete external user login info by user ID
|
||||
func (ur *userExternalLoginRepo) DeleteUserExternalLoginByUserID(ctx context.Context, userID string) (err error) {
|
||||
cond := &entity.UserExternalLogin{}
|
||||
_, err = ur.data.DB.Context(ctx).Where("user_id = ?", userID).Delete(cond)
|
||||
if err != nil {
|
||||
err = errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// SetCacheUserExternalLoginInfo cache user info for external login
|
||||
func (ur *userExternalLoginRepo) SetCacheUserExternalLoginInfo(
|
||||
ctx context.Context, key string, info *schema.ExternalLoginUserInfoCache) (err error) {
|
||||
|
||||
@@ -45,6 +45,7 @@ import (
|
||||
"github.com/apache/incubator-answer/internal/service/role"
|
||||
"github.com/apache/incubator-answer/internal/service/siteinfo_common"
|
||||
usercommon "github.com/apache/incubator-answer/internal/service/user_common"
|
||||
"github.com/apache/incubator-answer/internal/service/user_external_login"
|
||||
"github.com/apache/incubator-answer/pkg/checker"
|
||||
"github.com/jinzhu/copier"
|
||||
"github.com/segmentfault/pacman/errors"
|
||||
@@ -76,6 +77,7 @@ type UserAdminService struct {
|
||||
questionCommonRepo questioncommon.QuestionRepo
|
||||
answerCommonRepo answercommon.AnswerRepo
|
||||
commentCommonRepo comment_common.CommentCommonRepo
|
||||
userExternalLoginRepo user_external_login.UserExternalLoginRepo
|
||||
}
|
||||
|
||||
// NewUserAdminService new user admin service
|
||||
@@ -90,6 +92,7 @@ func NewUserAdminService(
|
||||
questionCommonRepo questioncommon.QuestionRepo,
|
||||
answerCommonRepo answercommon.AnswerRepo,
|
||||
commentCommonRepo comment_common.CommentCommonRepo,
|
||||
userExternalLoginRepo user_external_login.UserExternalLoginRepo,
|
||||
) *UserAdminService {
|
||||
return &UserAdminService{
|
||||
userRepo: userRepo,
|
||||
@@ -102,6 +105,7 @@ func NewUserAdminService(
|
||||
questionCommonRepo: questionCommonRepo,
|
||||
answerCommonRepo: answerCommonRepo,
|
||||
commentCommonRepo: commentCommonRepo,
|
||||
userExternalLoginRepo: userExternalLoginRepo,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,6 +152,13 @@ func (us *UserAdminService) UpdateUserStatus(ctx context.Context, req *schema.Up
|
||||
us.removeAllUserCreatedContent(ctx, userInfo.ID)
|
||||
}
|
||||
|
||||
if req.IsDeleted() {
|
||||
err := us.userExternalLoginRepo.DeleteUserExternalLoginByUserID(ctx, userInfo.ID)
|
||||
if err != nil {
|
||||
log.Errorf("remove all user external login error: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// if user reputation is zero means this user is inactive, so try to activate this user.
|
||||
if req.IsNormal() && userInfo.Rank == 0 {
|
||||
return us.userActivity.UserActive(ctx, userInfo.ID)
|
||||
|
||||
@@ -51,6 +51,7 @@ type UserExternalLoginRepo interface {
|
||||
GetByUserID(ctx context.Context, provider, userID string) (userInfo *entity.UserExternalLogin, exist bool, err error)
|
||||
GetUserExternalLoginList(ctx context.Context, userID string) (resp []*entity.UserExternalLogin, err error)
|
||||
DeleteUserExternalLogin(ctx context.Context, userID, externalID string) (err error)
|
||||
DeleteUserExternalLoginByUserID(ctx context.Context, userID string) (err error)
|
||||
SetCacheUserExternalLoginInfo(ctx context.Context, key string, info *schema.ExternalLoginUserInfoCache) (err error)
|
||||
GetCacheUserExternalLoginInfo(ctx context.Context, key string) (info *schema.ExternalLoginUserInfoCache, err error)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user