#1228 account use dao to crud
diff --git a/datasource/etcd/account.go b/datasource/etcd/account.go
index 82271f2..8872c16 100644
--- a/datasource/etcd/account.go
+++ b/datasource/etcd/account.go
@@ -30,8 +30,6 @@
esync "github.com/apache/servicecomb-service-center/datasource/etcd/sync"
"github.com/apache/servicecomb-service-center/datasource/rbac"
"github.com/apache/servicecomb-service-center/pkg/log"
- "github.com/apache/servicecomb-service-center/pkg/privacy"
- "github.com/apache/servicecomb-service-center/pkg/util"
)
func init() {
@@ -56,16 +54,7 @@
if exist {
return rbac.ErrAccountDuplicated
}
- a.Password, err = privacy.ScryptPassword(a.Password)
- if err != nil {
- log.Error("pwd hash failed", err)
- return err
- }
- a.Role = ""
- a.CurrentPassword = ""
- a.ID = util.GenerateUUID()
- a.CreateTime = strconv.FormatInt(time.Now().Unix(), 10)
- a.UpdateTime = a.CreateTime
+
opts, err := GenAccountOpts(a, etcdadpt.ActionPut)
if err != nil {
log.Error("", err)
diff --git a/datasource/mongo/account.go b/datasource/mongo/account.go
index b09904f..bcf9991 100644
--- a/datasource/mongo/account.go
+++ b/datasource/mongo/account.go
@@ -35,8 +35,6 @@
"github.com/apache/servicecomb-service-center/datasource/mongo/sync"
mutil "github.com/apache/servicecomb-service-center/datasource/mongo/util"
"github.com/apache/servicecomb-service-center/pkg/log"
- "github.com/apache/servicecomb-service-center/pkg/privacy"
- "github.com/apache/servicecomb-service-center/pkg/util"
)
func init() {
@@ -60,17 +58,7 @@
if exist {
return rbac.ErrAccountDuplicated
}
- a.Password, err = privacy.ScryptPassword(a.Password)
- if err != nil {
- msg := fmt.Sprintf("failed to hash account pwd, account name %s", a.Name)
- log.Error(msg, err)
- return err
- }
- a.Role = ""
- a.CurrentPassword = ""
- a.ID = util.GenerateUUID()
- a.CreateTime = strconv.FormatInt(time.Now().Unix(), 10)
- a.UpdateTime = a.CreateTime
+
err = createAccountTxn(ctx, a)
if err != nil {
if dao.IsDuplicateKey(err) {
diff --git a/server/service/rbac/account_service.go b/server/service/rbac/account_service.go
index 2e9af34..284e7b3 100644
--- a/server/service/rbac/account_service.go
+++ b/server/service/rbac/account_service.go
@@ -21,10 +21,14 @@
import (
"context"
"fmt"
+ "strconv"
+ "time"
"github.com/apache/servicecomb-service-center/datasource/rbac"
errorsEx "github.com/apache/servicecomb-service-center/pkg/errors"
"github.com/apache/servicecomb-service-center/pkg/log"
+ "github.com/apache/servicecomb-service-center/pkg/privacy"
+ "github.com/apache/servicecomb-service-center/pkg/util"
quotasvc "github.com/apache/servicecomb-service-center/server/service/quota"
"github.com/apache/servicecomb-service-center/server/service/validator"
"github.com/go-chassis/cari/discovery"
@@ -66,6 +70,18 @@
}
}()
+ a.Password, err = privacy.ScryptPassword(a.Password)
+ if err != nil {
+ msg := fmt.Sprintf("failed to hash account pwd, account name %s", a.Name)
+ log.Error(msg, err)
+ return err
+ }
+ a.Role = ""
+ a.CurrentPassword = ""
+ a.ID = util.GenerateUUID()
+ a.CreateTime = strconv.FormatInt(time.Now().Unix(), 10)
+ a.UpdateTime = a.CreateTime
+
err = rbac.Instance().CreateAccount(ctx, a)
if err == nil {
log.Info(fmt.Sprintf("create account [%s] success", a.Name))
diff --git a/syncer/service/replicator/resource/account.go b/syncer/service/replicator/resource/account.go
index 100708a..68b12ad 100644
--- a/syncer/service/replicator/resource/account.go
+++ b/syncer/service/replicator/resource/account.go
@@ -2,13 +2,13 @@
import (
"context"
+ "errors"
"fmt"
+ "github.com/apache/servicecomb-service-center/datasource/rbac"
"github.com/apache/servicecomb-service-center/pkg/log"
- servicerbac "github.com/apache/servicecomb-service-center/server/service/rbac"
v1sync "github.com/apache/servicecomb-service-center/syncer/api/v1"
- "github.com/go-chassis/cari/pkg/errsvc"
rbacmodel "github.com/go-chassis/cari/rbac"
)
@@ -27,7 +27,7 @@
type accountManager interface {
CreateAccount(ctx context.Context, a *rbacmodel.Account) error
GetAccount(ctx context.Context, name string) (*rbacmodel.Account, error)
- UpdateAccount(ctx context.Context, name string, account *rbacmodel.Account) error
+ UpdateAccount(ctx context.Context, account *rbacmodel.Account) error
DeleteAccount(ctx context.Context, name string) error
}
@@ -67,7 +67,7 @@
cur, err := a.manager.GetAccount(ctx, a.accountName)
if err != nil {
- if errsvc.IsErrEqualCode(err, rbacmodel.ErrAccountNotExist) {
+ if errors.Is(err, rbac.ErrAccountNotExist) {
return nil
}
return FailResult(err)
@@ -103,7 +103,7 @@
a.accountName))
return a.CreateHandle(ctx)
}
- return a.manager.UpdateAccount(ctx, a.input.Name, a.input)
+ return a.manager.UpdateAccount(ctx, a.input)
}
func (a *account) DeleteHandle(ctx context.Context) error {
@@ -115,17 +115,18 @@
}
func (a *account) CreateAccount(ctx context.Context, at *rbacmodel.Account) error {
- return servicerbac.CreateAccount(ctx, at)
+ return rbac.Instance().CreateAccount(ctx, at)
}
func (a *account) GetAccount(ctx context.Context, name string) (*rbacmodel.Account, error) {
- return servicerbac.GetAccount(ctx, name)
+ return rbac.Instance().GetAccount(ctx, name)
}
-func (a *account) UpdateAccount(ctx context.Context, name string, account *rbacmodel.Account) error {
- return servicerbac.UpdateAccount(ctx, name, account)
+func (a *account) UpdateAccount(ctx context.Context, account *rbacmodel.Account) error {
+ return rbac.Instance().UpdateAccount(ctx, account.Name, account)
}
func (a *account) DeleteAccount(ctx context.Context, name string) error {
- return servicerbac.DeleteAccount(ctx, name)
+ _, err := rbac.Instance().DeleteAccount(ctx, []string{name})
+ return err
}
diff --git a/syncer/service/task/manager.go b/syncer/service/task/manager.go
index a603001..5c51c32 100644
--- a/syncer/service/task/manager.go
+++ b/syncer/service/task/manager.go
@@ -225,7 +225,7 @@
func (m *manager) handleResult(res *event.Result) {
if res.Error != nil || res.Data.Code == resource.Fail {
- log.Error("get event result, return error ", res.Error)
+ log.Error(fmt.Sprintf("get task %s result, return error", res.ID), res.Error)
m.cache.Range(func(key, value interface{}) bool {
if res.ID == key {
m.cache.Delete(key)
@@ -241,7 +241,7 @@
return
}
- log.Info(fmt.Sprintf("key,result: %s", res.ID))
+ log.Info(fmt.Sprintf("key: %s,result: %v", res.ID, res.Data))
t, ok := m.cache.LoadAndDelete(res.ID)
if !ok {