github.com/infraboard/keyauth@v0.8.1/apps/policy/request_ext.go (about) 1 package policy 2 3 import ( 4 "fmt" 5 "net/http" 6 7 "github.com/go-playground/validator/v10" 8 "github.com/infraboard/mcube/http/request" 9 ) 10 11 const ( 12 MaxUserPolicy = 2048 13 ) 14 15 // use a single instance of Validate, it caches struct info 16 var ( 17 validate = validator.New() 18 ) 19 20 // NewQueryPolicyRequestFromHTTP 列表查询请求 21 func NewQueryPolicyRequestFromHTTP(r *http.Request) *QueryPolicyRequest { 22 page := request.NewPageRequestFromHTTP(r) 23 req := NewQueryPolicyRequest(page) 24 25 qs := r.URL.Query() 26 req.Account = qs.Get("account") 27 req.RoleId = qs.Get("role_id") 28 req.NamespaceId = qs.Get("namespace_id") 29 req.WithRole = qs.Get("with_role") == "true" 30 req.WithNamespace = qs.Get("with_namespace") == "true" 31 return req 32 } 33 34 // NewQueryPolicyRequest 列表查询请求 35 func NewQueryPolicyRequest(pageReq *request.PageRequest) *QueryPolicyRequest { 36 return &QueryPolicyRequest{ 37 Page: pageReq, 38 WithRole: false, 39 WithNamespace: false, 40 } 41 } 42 43 // Validate 校验请求是否合法 44 func (req *QueryPolicyRequest) Validate() error { 45 return validate.Struct(req) 46 } 47 48 func (req *QueryPolicyRequest) CheckOwner(account string) bool { 49 return req.Account == account 50 } 51 52 // NewDescriptPolicyRequest new实例 53 func NewDescriptPolicyRequest() *DescribePolicyRequest { 54 return &DescribePolicyRequest{} 55 } 56 57 // Validate todo 58 func (req *DescribePolicyRequest) Validate() error { 59 if req.Id == "" { 60 return fmt.Errorf("policy id required") 61 } 62 63 return nil 64 } 65 66 // NewDeletePolicyRequestWithID todo 67 func NewDeletePolicyRequestWithID(id string) *DeletePolicyRequest { 68 req := NewDeletePolicyRequest() 69 req.Id = id 70 return req 71 } 72 73 // NewDeletePolicyRequestWithNamespaceID todo 74 func NewDeletePolicyRequestWithNamespaceID(namespaceID string) *DeletePolicyRequest { 75 req := NewDeletePolicyRequest() 76 req.NamespaceId = namespaceID 77 return req 78 } 79 80 // NewDeletePolicyRequestWithAccount todo 81 func NewDeletePolicyRequestWithAccount(account string) *DeletePolicyRequest { 82 req := NewDeletePolicyRequest() 83 req.Account = account 84 return req 85 } 86 87 // NewDeletePolicyRequestWithRoleID todo 88 func NewDeletePolicyRequestWithRoleID(roleID string) *DeletePolicyRequest { 89 req := NewDeletePolicyRequest() 90 req.RoleId = roleID 91 return req 92 } 93 94 // NewDeletePolicyRequest todo 95 func NewDeletePolicyRequest() *DeletePolicyRequest { 96 return &DeletePolicyRequest{} 97 } 98 99 // Validate todo 100 func (req *DeletePolicyRequest) Validate() error { 101 if req.Id == "" { 102 return fmt.Errorf("policy id required") 103 } 104 105 return nil 106 }