diff --git a/core/http/api/v2/badge/apis.go b/core/http/api/v2/badge/apis.go index 3df870fd..b490922c 100644 --- a/core/http/api/v2/badge/apis.go +++ b/core/http/api/v2/badge/apis.go @@ -69,13 +69,20 @@ func (a *API) Create(c *gin.Context) { } } -func (a *API) Update(c *gin.Context) { - // op := "badge: update" - resourceType, resourceID, err := getResourceContext(c) +func (a *API) UpdateClusterBadge(c *gin.Context) { + clusterIDStr := c.Param(common.ParamClusterID) + clusterID, err := strconv.ParseUint(clusterIDStr, 10, 0) + if err != nil { + errMsg := fmt.Sprintf("invalid : %s, err: %s", clusterIDStr, err.Error()) + response.AbortWithRPCError(c, rpcerror.ParamError.WithErrMsg(errMsg)) return } + a.update(c, common.ResourceCluster, uint(clusterID)) +} +func (a *API) update(c *gin.Context, resourceType string, resourceID uint) { + // op := "badge: update" badgeIDorName := c.Param(_paramBadgeIDorName) badgeID, err := strconv.ParseUint(badgeIDorName, 10, 0) @@ -100,7 +107,7 @@ func (a *API) Update(c *gin.Context) { response.SuccessWithData(c, b) } } else { - if b, err := a.badgeCtl.UpdateBadgeByName(c, resourceType, resourceID, badgeName, &badgeUpdate); err != nil { + if b, err := a.badgeCtl.UpdateBadgeByName(c, resourceType, uint(resourceID), badgeName, &badgeUpdate); err != nil { response.AbortWithRPCError(c, rpcerror.InternalError.WithErrMsg(fmt.Sprintf("failed to update badge, err: %s", err.Error()))) } else { diff --git a/core/http/api/v2/badge/routers.go b/core/http/api/v2/badge/routers.go index 3f2bbf3f..650fceb1 100644 --- a/core/http/api/v2/badge/routers.go +++ b/core/http/api/v2/badge/routers.go @@ -31,9 +31,9 @@ func (a *API) RegisterRoute(engine *gin.Engine) { }, { Method: http.MethodPut, - Pattern: fmt.Sprintf("/:%v/:%v/badges/:%v", - common.ParamResourceType, common.ParamResourceID, _paramBadgeIDorName), - HandlerFunc: a.Update, + Pattern: fmt.Sprintf("/clusters/:%v/badges/:%v", + common.ParamClusterID, _paramBadgeIDorName), + HandlerFunc: a.UpdateClusterBadge, }, { Method: http.MethodDelete, diff --git a/roles.yaml b/roles.yaml index f80d53fe..f279675b 100644 --- a/roles.yaml +++ b/roles.yaml @@ -87,6 +87,7 @@ Roles: - clusters/resume - clusters/containers - clusters/webhooks + - clusters/badges verbs: - "*" scopes: @@ -302,6 +303,7 @@ Roles: - clusters/accesstokens - personalaccesstokens - accesstokens + - clusters/badges verbs: - "*" scopes: @@ -457,6 +459,7 @@ Roles: - clusters/accesstokens - personalccesstokens - accesstokens + - clusters/badges verbs: - "*" scopes: @@ -514,6 +517,7 @@ Roles: - applications/accesstokens - clusters/accesstokens - personalaccesstokens + - clusters/badges verbs: - get scopes: diff --git a/scopes.yaml b/scopes.yaml index 8b19a52f..4e86f525 100644 --- a/scopes.yaml +++ b/scopes.yaml @@ -161,6 +161,7 @@ roles: - clusters/step - clusters/resourcetree - clusters/upgrade + - clusters/badges verbs: - "*" scopes: