This is an automated email from the ASF dual-hosted git repository.
littlecui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-service-center.git
The following commit(s) were added to refs/heads/master by this push:
new 7898767 validate role name (#1012)
7898767 is described below
commit 78987676d89fde739e3dc5dc5c168c025c13abac
Author: Shawn <[email protected]>
AuthorDate: Wed May 26 20:02:53 2021 +0800
validate role name (#1012)
---
server/resource/v4/role_resource.go | 6 ++++
server/service/validator/rbac_validator.go | 32 ++++++++++++++++++++++
.../{validator_test.go => rbac_validator_test.go} | 31 ++++++++++++++++++++-
server/service/validator/validator.go | 26 +++---------------
4 files changed, 72 insertions(+), 23 deletions(-)
diff --git a/server/resource/v4/role_resource.go
b/server/resource/v4/role_resource.go
index 5076529..417b690 100644
--- a/server/resource/v4/role_resource.go
+++ b/server/resource/v4/role_resource.go
@@ -20,6 +20,7 @@ package v4
import (
"context"
"encoding/json"
+ "github.com/apache/servicecomb-service-center/server/service/validator"
"io/ioutil"
"net/http"
@@ -89,6 +90,11 @@ func (rr *RoleResource) CreateRolePermission(w
http.ResponseWriter, req *http.Re
rest.WriteError(w, discovery.ErrInvalidParams, errorsEx.MsgJSON)
return
}
+ err = validator.ValidateCreateRole(role)
+ if err != nil {
+ rest.WriteError(w, discovery.ErrInvalidParams, err.Error())
+ return
+ }
err = dao.CreateRole(context.TODO(), role)
if err != nil {
if err == datasource.ErrRoleDuplicated {
diff --git a/server/service/validator/rbac_validator.go
b/server/service/validator/rbac_validator.go
new file mode 100644
index 0000000..d4497a5
--- /dev/null
+++ b/server/service/validator/rbac_validator.go
@@ -0,0 +1,32 @@
+package validator
+
+import "github.com/go-chassis/cari/rbac"
+
+func ValidateCreateAccount(a *rbac.Account) error {
+ err := baseCheck(a)
+ if err != nil {
+ return err
+ }
+ return createAccountValidator.Validate(a)
+}
+func ValidateCreateRole(a *rbac.Role) error {
+ err := baseCheck(a)
+ if err != nil {
+ return err
+ }
+ return createRoleValidator.Validate(a)
+}
+func ValidateAccountLogin(a *rbac.Account) error {
+ err := baseCheck(a)
+ if err != nil {
+ return err
+ }
+ return accountLoginValidator.Validate(a)
+}
+func ValidateChangePWD(a *rbac.Account) error {
+ err := baseCheck(a)
+ if err != nil {
+ return err
+ }
+ return changePWDValidator.Validate(a)
+}
diff --git a/server/service/validator/validator_test.go
b/server/service/validator/rbac_validator_test.go
similarity index 78%
rename from server/service/validator/validator_test.go
rename to server/service/validator/rbac_validator_test.go
index e5faabf..6523f94 100644
--- a/server/service/validator/validator_test.go
+++ b/server/service/validator/rbac_validator_test.go
@@ -18,9 +18,9 @@
package validator_test
import (
- "github.com/apache/servicecomb-service-center/server/service/validator"
"testing"
+ "github.com/apache/servicecomb-service-center/server/service/validator"
"github.com/go-chassis/cari/rbac"
)
@@ -72,3 +72,32 @@ func TestValidateCreateAccount(t *testing.T) {
}
}
}
+
+func TestValidateCreateRole(t *testing.T) {
+ type args struct {
+ a *rbac.Role
+ }
+ tests := []struct {
+ name string
+ args args
+ wantErr bool
+ }{
+ {name: "given invalid role name",
+ args: args{a: &rbac.Role{
+ Name: "tester*a",
+ }},
+ wantErr: true,
+ },
+ {name: "given valid role name",
+ args: args{a: &rbac.Role{
+ Name: "tester-a",
+ }},
+ wantErr: false,
+ },
+ }
+ for _, tt := range tests {
+ if err := validator.ValidateCreateRole(tt.args.a); (err != nil)
!= tt.wantErr {
+ t.Errorf("%q. ValidateCreateRole() error = %v, wantErr
%v", tt.name, err, tt.wantErr)
+ }
+ }
+}
diff --git a/server/service/validator/validator.go
b/server/service/validator/validator.go
index e9823ab..994e1bf 100644
--- a/server/service/validator/validator.go
+++ b/server/service/validator/validator.go
@@ -22,11 +22,12 @@ import (
"github.com/apache/servicecomb-service-center/pkg/log"
"github.com/apache/servicecomb-service-center/pkg/validate"
pb "github.com/go-chassis/cari/discovery"
- "github.com/go-chassis/cari/rbac"
"reflect"
)
var createAccountValidator = &validate.Validator{}
+var createRoleValidator = &validate.Validator{}
+
var changePWDValidator = &validate.Validator{}
var accountLoginValidator = &validate.Validator{}
@@ -35,6 +36,8 @@ func init() {
createAccountValidator.AddRule("Roles", &validate.Rule{Min: 1, Regexp:
nameRegex})
createAccountValidator.AddRule("Password", &validate.Rule{Regexp:
&validate.PasswordChecker{}})
+ createRoleValidator.AddRule("Name", &validate.Rule{Max: 64, Regexp:
nameRegex})
+
changePWDValidator.AddRule("Password", &validate.Rule{Regexp:
&validate.PasswordChecker{}})
changePWDValidator.AddRule("Name", &validate.Rule{Regexp: nameRegex})
@@ -117,24 +120,3 @@ func baseCheck(v interface{}) error {
}
return nil
}
-func ValidateCreateAccount(a *rbac.Account) error {
- err := baseCheck(a)
- if err != nil {
- return err
- }
- return createAccountValidator.Validate(a)
-}
-func ValidateAccountLogin(a *rbac.Account) error {
- err := baseCheck(a)
- if err != nil {
- return err
- }
- return accountLoginValidator.Validate(a)
-}
-func ValidateChangePWD(a *rbac.Account) error {
- err := baseCheck(a)
- if err != nil {
- return err
- }
- return changePWDValidator.Validate(a)
-}