fix: internal user
CI / changes (push) Successful in 40s
CI / ad (push) Successful in 0s
CI / admin (push) Successful in 0s
CI / bff (push) Successful in 24s
CI / chore (push) Successful in 23s
CI / equipment (push) Successful in 1s
CI / express (push) Successful in 0s
CI / factory (push) Successful in 0s
CI / payment (push) Successful in 1s
CI / product (push) Successful in 0s
CI / record (push) Successful in 0s
CI / sale (push) Successful in 23s
CI / task (push) Successful in 0s
CI / user (push) Successful in 24s
CI / wecom (push) Successful in 0s
CI / changes (push) Successful in 40s
CI / ad (push) Successful in 0s
CI / admin (push) Successful in 0s
CI / bff (push) Successful in 24s
CI / chore (push) Successful in 23s
CI / equipment (push) Successful in 1s
CI / express (push) Successful in 0s
CI / factory (push) Successful in 0s
CI / payment (push) Successful in 1s
CI / product (push) Successful in 0s
CI / record (push) Successful in 0s
CI / sale (push) Successful in 23s
CI / task (push) Successful in 0s
CI / user (push) Successful in 24s
CI / wecom (push) Successful in 0s
This commit is contained in:
@@ -51,13 +51,14 @@ func loadEnabledClient(clientCode string) (*dao.Client, error) {
|
||||
return &client, nil
|
||||
}
|
||||
|
||||
func findCredential(credentialType, identifier string) (*dao.UserCredential, error) {
|
||||
func findCredential(credentialType, identifier, subjectType string) (*dao.UserCredential, error) {
|
||||
var cred dao.UserCredential
|
||||
credModel := model.UserCredentialModel{}.Init()
|
||||
if err := credModel.GetOne(modelbase.Params{
|
||||
Eq: map[string]string{
|
||||
"credential_type": credentialType,
|
||||
"identifier": identifier,
|
||||
"subject_type": subjectType,
|
||||
},
|
||||
}, &cred); err != nil {
|
||||
return nil, err
|
||||
@@ -100,8 +101,8 @@ func loadEnabledUser(userId int64) (*dao.UserRow, error) {
|
||||
return &row, nil
|
||||
}
|
||||
|
||||
func resolveOrCreateWechatUser(ctx context.Context, db *gorm.DB, openid, unionid, clientCode string) (int64, error) {
|
||||
openCred, err := findCredential(dao.CredentialTypeOpenid, openid)
|
||||
func resolveOrCreateWechatUser(ctx context.Context, db *gorm.DB, openid, unionid, clientCode, subjectType string) (int64, error) {
|
||||
openCred, err := findCredential(dao.CredentialTypeOpenid, openid, subjectType)
|
||||
if err != nil {
|
||||
return utils.NumberZero, err
|
||||
}
|
||||
@@ -109,7 +110,7 @@ func resolveOrCreateWechatUser(ctx context.Context, db *gorm.DB, openid, unionid
|
||||
if openCred.Status == dao.StatusDisabled {
|
||||
return utils.NumberZero, status.Error(codes.FailedPrecondition, "登录凭证已禁用")
|
||||
}
|
||||
if err := ensureUserClient(db, openCred.UserId, clientCode); err != nil {
|
||||
if err := ensureUserClient(db, openCred.UserId, clientCode, utils.NumberZero); err != nil {
|
||||
return utils.NumberZero, err
|
||||
}
|
||||
return openCred.UserId, nil
|
||||
@@ -117,7 +118,7 @@ func resolveOrCreateWechatUser(ctx context.Context, db *gorm.DB, openid, unionid
|
||||
|
||||
var userId int64
|
||||
if unionid != utils.StringEmpty {
|
||||
unionCred, uErr := findCredential(dao.CredentialTypeUnionid, unionid)
|
||||
unionCred, uErr := findCredential(dao.CredentialTypeUnionid, unionid, subjectType)
|
||||
if uErr != nil {
|
||||
return utils.NumberZero, uErr
|
||||
}
|
||||
@@ -140,10 +141,10 @@ func resolveOrCreateWechatUser(ctx context.Context, db *gorm.DB, openid, unionid
|
||||
userId = add.Id
|
||||
}
|
||||
|
||||
if err := createWechatCredentials(tx, userId, openid, unionid); err != nil {
|
||||
if err := createWechatCredentials(tx, userId, openid, unionid, subjectType); err != nil {
|
||||
return err
|
||||
}
|
||||
return ensureUserClient(tx, userId, clientCode)
|
||||
return ensureUserClient(tx, userId, clientCode, utils.NumberZero)
|
||||
})
|
||||
if txErr != nil {
|
||||
if st, ok := status.FromError(txErr); ok {
|
||||
@@ -154,7 +155,7 @@ func resolveOrCreateWechatUser(ctx context.Context, db *gorm.DB, openid, unionid
|
||||
return userId, nil
|
||||
}
|
||||
|
||||
func createWechatCredentials(tx *gorm.DB, userId int64, openid, unionid string) error {
|
||||
func createWechatCredentials(tx *gorm.DB, userId int64, openid, unionid, subjectType string) error {
|
||||
credModel := model.UserCredentialModel{}.Init()
|
||||
credModel.Base = credModel.Base.WithTX(tx)
|
||||
|
||||
@@ -163,6 +164,7 @@ func createWechatCredentials(tx *gorm.DB, userId int64, openid, unionid string)
|
||||
Eq: map[string]string{
|
||||
"credential_type": dao.CredentialTypeOpenid,
|
||||
"identifier": openid,
|
||||
"subject_type": subjectType,
|
||||
},
|
||||
}, &existOpen); err != nil {
|
||||
return err
|
||||
@@ -172,6 +174,7 @@ func createWechatCredentials(tx *gorm.DB, userId int64, openid, unionid string)
|
||||
UserId: userId,
|
||||
CredentialType: dao.CredentialTypeOpenid,
|
||||
Identifier: openid,
|
||||
SubjectType: subjectType,
|
||||
ExtraJson: dao.ExtraJsonEmpty,
|
||||
Status: dao.StatusEnabled,
|
||||
}); err != nil {
|
||||
@@ -190,6 +193,7 @@ func createWechatCredentials(tx *gorm.DB, userId int64, openid, unionid string)
|
||||
Eq: map[string]string{
|
||||
"credential_type": dao.CredentialTypeUnionid,
|
||||
"identifier": unionid,
|
||||
"subject_type": subjectType,
|
||||
},
|
||||
}, &existUnion); err != nil {
|
||||
return err
|
||||
@@ -199,6 +203,7 @@ func createWechatCredentials(tx *gorm.DB, userId int64, openid, unionid string)
|
||||
UserId: userId,
|
||||
CredentialType: dao.CredentialTypeUnionid,
|
||||
Identifier: unionid,
|
||||
SubjectType: subjectType,
|
||||
ExtraJson: dao.ExtraJsonEmpty,
|
||||
Status: dao.StatusEnabled,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user