mirror of https://gitee.com/answerdev/answer.git
fix(plugin): add user external login repo
This commit is contained in:
parent
81d786ff66
commit
01c02ae2b7
|
@ -40,6 +40,7 @@ import (
|
|||
"github.com/answerdev/answer/internal/repo/tag_common"
|
||||
"github.com/answerdev/answer/internal/repo/unique"
|
||||
"github.com/answerdev/answer/internal/repo/user"
|
||||
"github.com/answerdev/answer/internal/repo/user_external_login"
|
||||
"github.com/answerdev/answer/internal/router"
|
||||
"github.com/answerdev/answer/internal/service"
|
||||
"github.com/answerdev/answer/internal/service/action"
|
||||
|
@ -74,7 +75,7 @@ import (
|
|||
"github.com/answerdev/answer/internal/service/uploader"
|
||||
"github.com/answerdev/answer/internal/service/user_admin"
|
||||
"github.com/answerdev/answer/internal/service/user_common"
|
||||
"github.com/answerdev/answer/internal/service/user_external_login"
|
||||
user_external_login2 "github.com/answerdev/answer/internal/service/user_external_login"
|
||||
"github.com/segmentfault/pacman"
|
||||
"github.com/segmentfault/pacman/log"
|
||||
)
|
||||
|
@ -211,7 +212,8 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
|
|||
templateRenderController := templaterender.NewTemplateRenderController(questionService, userService, tagService, answerService, commentService, dataData, siteInfoCommonService)
|
||||
templateController := controller.NewTemplateController(templateRenderController, siteInfoCommonService)
|
||||
templateRouter := router.NewTemplateRouter(templateController, templateRenderController, siteInfoController)
|
||||
userExternalLoginService := user_external_login.NewUserExternalLoginService(userRepo, userCommon)
|
||||
userExternalLoginRepo := user_external_login.NewUserExternalLoginRepo(dataData)
|
||||
userExternalLoginService := user_external_login2.NewUserExternalLoginService(userRepo, userCommon, userExternalLoginRepo)
|
||||
connectorController := controller.NewConnectorController(siteInfoCommonService, userExternalLoginService)
|
||||
pluginAPIRouter := router.NewPluginAPIRouter(connectorController)
|
||||
ginEngine := server.NewHTTPServer(debug, staticRouter, answerAPIRouter, swaggerRouter, uiRouter, authUserMiddleware, avatarMiddleware, templateRouter, pluginAPIRouter)
|
||||
|
|
|
@ -11,6 +11,7 @@ import (
|
|||
"github.com/answerdev/answer/internal/service/siteinfo_common"
|
||||
"github.com/answerdev/answer/internal/service/user_external_login"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/segmentfault/pacman/log"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -70,6 +71,7 @@ func (cc *ConnectorController) ConnectorLogin(connector plugin.Connector) (fn fu
|
|||
}
|
||||
resp, err := cc.userExternalService.ExternalLogin(ctx, connector.ConnectorSlugName(), userInfo)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
ctx.Redirect(http.StatusFound, "/50x")
|
||||
return
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ package entity
|
|||
|
||||
import "time"
|
||||
|
||||
// UserExternalLogin
|
||||
// UserExternalLogin user external login
|
||||
type UserExternalLogin struct {
|
||||
ID int64 `xorm:"not null pk autoincr BIGINT(20) id"`
|
||||
CreatedAt time.Time `xorm:"created TIMESTAMP created_at"`
|
||||
|
|
|
@ -26,6 +26,7 @@ import (
|
|||
"github.com/answerdev/answer/internal/repo/tag_common"
|
||||
"github.com/answerdev/answer/internal/repo/unique"
|
||||
"github.com/answerdev/answer/internal/repo/user"
|
||||
"github.com/answerdev/answer/internal/repo/user_external_login"
|
||||
"github.com/google/wire"
|
||||
)
|
||||
|
||||
|
@ -72,4 +73,5 @@ var ProviderSetRepo = wire.NewSet(
|
|||
role.NewUserRoleRelRepo,
|
||||
role.NewRolePowerRelRepo,
|
||||
role.NewPowerRepo,
|
||||
user_external_login.NewUserExternalLoginRepo,
|
||||
)
|
||||
|
|
|
@ -31,10 +31,12 @@ type UserExternalLoginService struct {
|
|||
func NewUserExternalLoginService(
|
||||
userRepo usercommon.UserRepo,
|
||||
userCommonService *usercommon.UserCommon,
|
||||
userExternalLoginRepo UserExternalLoginRepo,
|
||||
) *UserExternalLoginService {
|
||||
return &UserExternalLoginService{
|
||||
userRepo: userRepo,
|
||||
userCommonService: userCommonService,
|
||||
userRepo: userRepo,
|
||||
userCommonService: userCommonService,
|
||||
userExternalLoginRepo: userExternalLoginRepo,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -55,12 +57,13 @@ func (us *UserExternalLoginService) ExternalLogin(
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if exist {
|
||||
// if user already exists, try to bind this user
|
||||
err = us.BindOldUser(ctx, provider, externalUserInfo, oldUserInfo)
|
||||
} else {
|
||||
if !exist {
|
||||
oldUserInfo, err = us.RegisterNewUser(ctx, provider, externalUserInfo)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
err = us.BindOldUser(ctx, provider, externalUserInfo, oldUserInfo)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -72,7 +75,6 @@ func (us *UserExternalLoginService) ExternalLogin(
|
|||
|
||||
func (us *UserExternalLoginService) RegisterNewUser(ctx context.Context, provider string,
|
||||
externalUserInfo plugin.ExternalLoginUserInfo) (userInfo *entity.User, err error) {
|
||||
|
||||
userInfo = &entity.User{}
|
||||
userInfo.EMail = externalUserInfo.Email
|
||||
userInfo.DisplayName = externalUserInfo.Name
|
||||
|
|
Loading…
Reference in New Issue