Skip to content

Commit b828bb3

Browse files
committed
correcting rbac
1 parent 53ff24e commit b828bb3

File tree

3 files changed

+21
-12
lines changed

3 files changed

+21
-12
lines changed

api/appStore/deployment/AppStoreDeploymentRestHandler.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -355,9 +355,10 @@ func (handler *AppStoreDeploymentRestHandlerImpl) LinkHelmApplicationToChartStor
355355
}
356356

357357
// RBAC enforcer applying
358-
rbacObject := handler.enforcerUtilHelm.GetHelmObjectByClusterId(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
358+
rbacObject, rbacObject2 := handler.enforcerUtilHelm.GetHelmObject(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
359359
token := r.Header.Get("token")
360-
if ok := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionUpdate, rbacObject); !ok {
360+
ok := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionUpdate, rbacObject) || handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionUpdate, rbacObject2)
361+
if !ok {
361362
common.WriteJsonResp(w, errors.New("unauthorized"), nil, http.StatusForbidden)
362363
return
363364
}
@@ -569,9 +570,9 @@ func (handler AppStoreDeploymentRestHandlerImpl) UpdateProjectHelmApp(w http.Res
569570
common.WriteJsonResp(w, fmt.Errorf("Unable to fetch installed app version details"), nil, http.StatusBadRequest)
570571
}
571572

572-
rbacObjectCurrentForCurrentProject, rbacObjectCurrentForCurrentProject2 := handler.enforcerUtilHelm.GetHelmObject(installedApp.ClusterId, installedApp.Namespace, installedApp.AppName)
573+
rbacObjectForCurrentProject, rbacObjectForCurrentProject2 := handler.enforcerUtilHelm.GetHelmObject(installedApp.ClusterId, installedApp.Namespace, installedApp.AppName)
573574

574-
ok := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionUpdate, rbacObjectCurrentForCurrentProject) || handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionUpdate, rbacObjectCurrentForCurrentProject2)
575+
ok := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionUpdate, rbacObjectForCurrentProject) || handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionUpdate, rbacObjectForCurrentProject2)
575576

576577
if !ok {
577578
common.WriteJsonResp(w, fmt.Errorf("unauthorized user"), nil, http.StatusForbidden)

api/helm-app/HelmAppRestHandler.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -245,9 +245,12 @@ func (handler *HelmAppRestHandlerImpl) GetDesiredManifest(w http.ResponseWriter,
245245
return
246246
}
247247
// RBAC enforcer applying
248-
rbacObject := handler.enforcerUtil.GetHelmObjectByClusterId(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
248+
rbacObject, rbacObject2 := handler.enforcerUtil.GetHelmObject(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
249249
token := r.Header.Get("token")
250-
if ok := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, rbacObject); !ok {
250+
251+
ok := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, rbacObject) || handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, rbacObject2)
252+
253+
if !ok {
251254
common.WriteJsonResp(w, errors.New("unauthorized"), nil, http.StatusForbidden)
252255
return
253256
}
@@ -282,9 +285,12 @@ func (handler *HelmAppRestHandlerImpl) DeleteApplication(w http.ResponseWriter,
282285
return
283286
}
284287
// RBAC enforcer applying
285-
rbacObject := handler.enforcerUtil.GetHelmObjectByClusterId(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
288+
rbacObject, rbacObject2 := handler.enforcerUtil.GetHelmObject(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
286289
token := r.Header.Get("token")
287-
if ok := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionDelete, rbacObject); !ok {
290+
291+
ok := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionDelete, rbacObject) || handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionDelete, rbacObject2)
292+
293+
if !ok {
288294
common.WriteJsonResp(w, errors.New("unauthorized"), nil, http.StatusForbidden)
289295
return
290296
}
@@ -320,9 +326,12 @@ func (handler *HelmAppRestHandlerImpl) UpdateApplication(w http.ResponseWriter,
320326
return
321327
}
322328
// RBAC enforcer applying
323-
rbacObject := handler.enforcerUtil.GetHelmObjectByClusterId(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
329+
rbacObject, rbacObject2 := handler.enforcerUtil.GetHelmObject(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
324330
token := r.Header.Get("token")
325-
if ok := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionUpdate, rbacObject); !ok {
331+
332+
ok := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, rbacObject) || handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, rbacObject2)
333+
334+
if !ok {
326335
common.WriteJsonResp(w, errors.New("unauthorized"), nil, http.StatusForbidden)
327336
return
328337
}

util/rbac/EnforcerUtilHelm.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,7 @@ func (impl EnforcerUtilHelmImpl) GetHelmObject(clusterId int, namespace string,
107107
} else {
108108
if installedApp.EnvironmentId == 0 {
109109
// for apps in EA mode, initally env id is 0.
110-
return fmt.Sprintf("%s/%s__%s/%s", installedApp.App.Team.Name, cluster.ClusterName, namespace, strings.ToLower(appName)),
111-
fmt.Sprintf("%s/%s/%s", installedApp.App.Team.Name, installedApp.Environment.EnvironmentIdentifier, strings.ToLower(appName))
110+
return fmt.Sprintf("%s/%s__%s/%s", installedApp.App.Team.Name, cluster.ClusterName, namespace, strings.ToLower(appName)), ""
112111
}
113112
// for apps which are assigned to a project and have env ID
114113
return fmt.Sprintf("%s/%s/%s", installedApp.App.Team.Name, installedApp.Environment.EnvironmentIdentifier, strings.ToLower(appName)),

0 commit comments

Comments
 (0)