Skip to content
Merged
Show file tree
Hide file tree
Changes from 45 commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
edb8a49
adding Team in release info
iamayushm Dec 5, 2022
57df8ea
wip
iamayushm Dec 6, 2022
3d2bd3d
wip
iamayushm Dec 6, 2022
8dc6266
shifting app by team id from pipeline build to app listing service
iamayushm Dec 7, 2022
ccb6b0e
shifting app by team id from pipeline build to app listing service
iamayushm Dec 7, 2022
3d04fb5
shifting app by team id from app listing to app service
iamayushm Dec 7, 2022
a8b5103
adding app router in EA mode
iamayushm Dec 7, 2022
a78b289
adding app router in EA mode
iamayushm Dec 7, 2022
f456970
adding app router in EA mode
iamayushm Dec 7, 2022
df2d8cc
temp enforcing by email
iamayushm Dec 7, 2022
ea32057
adding project condition
iamayushm Dec 7, 2022
a83e329
wip
iamayushm Dec 8, 2022
01150e4
wip - rbac object for case when env id is zero
iamayushm Dec 9, 2022
9a5cd3d
wip - changing rbac object an temporarily enforcing by email.
iamayushm Dec 9, 2022
007ad6d
wip - changing rbac object an temporarily enforcing by email.
iamayushm Dec 9, 2022
8e7fe32
wip
iamayushm Dec 9, 2022
427f16e
wip
iamayushm Dec 9, 2022
a853fdf
wip
iamayushm Dec 10, 2022
91dc6d2
wip: changing rbac for k8s resource and
iamayushm Dec 10, 2022
ec467df
wip: changing rbac for app listing page
iamayushm Dec 12, 2022
1396152
rbac in get host urls by batch
iamayushm Dec 12, 2022
b470e7e
wip
iamayushm Dec 12, 2022
65f9a00
api for updating project in cli mode
iamayushm Dec 13, 2022
85bca98
wip: added app name field in update project api for helm app
iamayushm Dec 13, 2022
e7872f0
Merge branch 'main' into project_field_in_EA_mode
iamayushm Dec 14, 2022
42a2e9c
Merge branch 'main' into project_field_in_EA_mode
iamayushm Dec 15, 2022
52b4858
Merge branch 'main' into project_field_cli_helm_apps
iamayushm Dec 15, 2022
016fb48
Merge branch 'project_field_in_EA_mode' into project_field_cli_helm_apps
iamayushm Dec 15, 2022
728355c
wip: api for getting app meta info by app name
iamayushm Dec 16, 2022
f2fde45
wip: stopping app creation during linking of cli apps if app aleady e…
iamayushm Dec 16, 2022
98ad57d
Merge branch 'main' into project_field_in_EA_mode
iamayushm Dec 16, 2022
33d90c2
wip: adding rbac object
iamayushm Dec 19, 2022
8c52dbc
Merge branch 'main' into project_field_cli_helm_apps
iamayushm Dec 19, 2022
ce04390
wip: adding rbac object
iamayushm Dec 19, 2022
6912012
Merge branch 'project_field_in_EA_mode' into project_field_cli_helm_apps
iamayushm Dec 19, 2022
933b603
wip: changing rbac for installed app
iamayushm Dec 19, 2022
b40024d
Merge branch 'project_field_in_EA_mode' into project_field_cli_helm_apps
iamayushm Dec 19, 2022
bd84dde
wip: changing rbac for installed app
iamayushm Dec 19, 2022
c24f570
wip: correcting rbac for installed app
iamayushm Dec 19, 2022
e90d598
wip: app fetching for
iamayushm Dec 19, 2022
bc87ee1
wip: fetching app details using installed app id
iamayushm Dec 19, 2022
e2f85a6
wip: correcting rbac call for installed app call
iamayushm Dec 20, 2022
0c48fd7
wip: correcting rbac call for get helm app meta info
iamayushm Dec 20, 2022
9ac0083
wip: correcting rbac call for get helm app meta info
iamayushm Dec 20, 2022
9ecd861
changing installedAppVersion id to installedAppId
iamayushm Dec 21, 2022
6c405f2
Merge branch 'main' into project_field_cli_helm_apps
iamayushm Dec 27, 2022
200711f
correcting rbac call for futuristic case
iamayushm Dec 27, 2022
aa8b2e1
correcting rbac call for futuristic case
iamayushm Dec 27, 2022
fb30419
adding project in helm list api
iamayushm Dec 29, 2022
a90dbf9
adding project in helm list api
iamayushm Dec 29, 2022
48b22e6
handling futuristic case in env autocomplete api
iamayushm Dec 30, 2022
ada3ac1
open api spec for update helm project api
iamayushm Jan 4, 2023
81f065a
open api spec for get helm app meta info
iamayushm Jan 4, 2023
7c479a4
Merge branch 'main' into project_field_cli_helm_apps
iamayushm Jan 9, 2023
ddfd982
changes after merge
iamayushm Jan 12, 2023
916a9c1
Merge branch 'main' into project_field_cli_helm_apps
iamayushm Jan 13, 2023
53ff24e
correcting telemetry rbac
iamayushm Jan 13, 2023
b828bb3
correcting rbac
iamayushm Jan 13, 2023
94b5892
correcting openapi spec
iamayushm Jan 13, 2023
16f7b77
review changes
iamayushm Jan 13, 2023
f7d502f
renaming enforcer helm object
iamayushm Jan 13, 2023
4d9a720
Merge branch 'main' into project_field_cli_helm_apps
iamayushm Jan 15, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Wire.go
Original file line number Diff line number Diff line change
Expand Up @@ -655,7 +655,7 @@ func InitializeApp() (*App, error) {
router.NewAppRouterImpl,
wire.Bind(new(router.AppRouter), new(*router.AppRouterImpl)),
restHandler.NewAppRestHandlerImpl,
wire.Bind(new(restHandler.AppRestHandlerHandler), new(*restHandler.AppRestHandlerImpl)),
wire.Bind(new(restHandler.AppRestHandler), new(*restHandler.AppRestHandlerImpl)),

app.NewAppCrudOperationServiceImpl,
wire.Bind(new(app.AppCrudOperationService), new(*app.AppCrudOperationServiceImpl)),
Expand Down
103 changes: 97 additions & 6 deletions api/appStore/deployment/AppStoreDeploymentRestHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ type AppStoreDeploymentRestHandler interface {
LinkHelmApplicationToChartStore(w http.ResponseWriter, r *http.Request)
UpdateInstalledApp(w http.ResponseWriter, r *http.Request)
GetInstalledAppVersion(w http.ResponseWriter, r *http.Request)
UpdateProjectHelmApp(w http.ResponseWriter, r *http.Request)
}

type AppStoreDeploymentRestHandlerImpl struct {
Expand Down Expand Up @@ -114,8 +115,10 @@ func (handler AppStoreDeploymentRestHandlerImpl) InstallApp(w http.ResponseWrite
//rbac block starts from here
var rbacObject string
var rbacObject2 string
if util2.IsBaseStack() {
rbacObject = handler.enforcerUtilHelm.GetHelmObjectByClusterId(request.ClusterId, request.Namespace, request.AppName)
if util2.IsBaseStack() && request.EnvironmentId == 0 {

rbacObject = handler.enforcerUtilHelm.GetHelmObjectByTeamIdAndClusterId(request.TeamId, request.ClusterId, request.Namespace, request.AppName)
//rbacObject = handler.enforcerUtilHelm.GetHelmObjectByClusterId(request.ClusterId, request.Namespace, request.AppName)
} else {
rbacObject, rbacObject2 = handler.enforcerUtil.GetHelmObjectByProjectIdAndEnvId(request.TeamId, request.EnvironmentId)
}
Expand Down Expand Up @@ -212,7 +215,7 @@ func (handler AppStoreDeploymentRestHandlerImpl) GetInstalledAppsByAppStoreId(w
var rbacObject string
var rbacObject2 string
if util2.IsHelmApp(app.AppOfferingMode) {
rbacObject = handler.enforcerUtilHelm.GetHelmObjectByClusterId(app.ClusterId, app.Namespace, app.AppName)
rbacObject = handler.enforcerUtilHelm.GetHelmObject(app.ClusterId, app.Namespace, app.AppName)
} else {
rbacObject, rbacObject2 = handler.enforcerUtil.GetHelmObjectByAppNameAndEnvId(app.AppName, app.EnvironmentId)
}
Expand Down Expand Up @@ -273,7 +276,7 @@ func (handler AppStoreDeploymentRestHandlerImpl) DeleteInstalledApp(w http.Respo
var rbacObject string
var rbacObject2 string
if util2.IsHelmApp(installedApp.AppOfferingMode) {
rbacObject = handler.enforcerUtilHelm.GetHelmObjectByClusterId(installedApp.ClusterId, installedApp.Namespace, installedApp.AppName)
rbacObject = handler.enforcerUtilHelm.GetHelmObject(installedApp.ClusterId, installedApp.Namespace, installedApp.AppName)
} else {
rbacObject, rbacObject2 = handler.enforcerUtil.GetHelmObjectByAppNameAndEnvId(installedApp.AppName, installedApp.EnvironmentId)
}
Expand Down Expand Up @@ -406,7 +409,7 @@ func (handler AppStoreDeploymentRestHandlerImpl) UpdateInstalledApp(w http.Respo
var rbacObject string
var rbacObject2 string
if util2.IsHelmApp(installedApp.AppOfferingMode) {
rbacObject = handler.enforcerUtilHelm.GetHelmObjectByClusterId(installedApp.ClusterId, installedApp.Namespace, installedApp.AppName)
rbacObject = handler.enforcerUtilHelm.GetHelmObject(installedApp.ClusterId, installedApp.Namespace, installedApp.AppName)
} else {
rbacObject, rbacObject2 = handler.enforcerUtil.GetHelmObject(installedApp.AppId, installedApp.EnvironmentId)
}
Expand Down Expand Up @@ -488,7 +491,7 @@ func (handler AppStoreDeploymentRestHandlerImpl) GetInstalledAppVersion(w http.R
var rbacObject string
var rbacObject2 string
if util2.IsHelmApp(dto.AppOfferingMode) {
rbacObject = handler.enforcerUtilHelm.GetHelmObjectByClusterId(dto.ClusterId, dto.Namespace, dto.AppName)
rbacObject = handler.enforcerUtilHelm.GetHelmObject(dto.ClusterId, dto.Namespace, dto.AppName)
} else {
rbacObject, rbacObject2 = handler.enforcerUtil.GetHelmObjectByAppNameAndEnvId(dto.AppName, dto.EnvironmentId)
}
Expand All @@ -507,3 +510,91 @@ func (handler AppStoreDeploymentRestHandlerImpl) GetInstalledAppVersion(w http.R

common.WriteJsonResp(w, err, dto, http.StatusOK)
}

func (handler AppStoreDeploymentRestHandlerImpl) UpdateProjectHelmApp(w http.ResponseWriter, r *http.Request) {

userId, err := handler.userAuthService.GetLoggedInUser(r)
if userId == 0 || err != nil {
common.WriteJsonResp(w, err, "Unauthorized User", http.StatusUnauthorized)
return
}

token := r.Header.Get("token")

var request appStoreBean.UpdateProjectHelmAppDTO

decoder := json.NewDecoder(r.Body)

err = decoder.Decode(&request)

if err != nil {
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
return
}

request.UserId = userId

if request.InstalledAppId == 0 {
appIdentifier, err := handler.helmAppService.DecodeAppId(request.AppId)
if err != nil {
handler.Logger.Errorw("error in decoding app id", "err", err)
common.WriteJsonResp(w, err, "error in decoding app id", http.StatusBadRequest)
}

// this rbac object checks that whether user have permission to change current project.

rbacObjectForCurrentProject := handler.enforcerUtilHelm.GetHelmObject(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)

ok := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionUpdate, rbacObjectForCurrentProject)

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

// this rbac object check that whether user have permission for new project which he is updating.
rbacObjectForRequestedProject := handler.enforcerUtilHelm.GetHelmObjectByTeamIdAndClusterId(request.TeamId, appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)

ok = handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionUpdate, rbacObjectForRequestedProject)

if !ok {
common.WriteJsonResp(w, fmt.Errorf("unauthorized user"), nil, http.StatusForbidden)
return
}
} else {

installedApp, err := handler.appStoreDeploymentService.GetInstalledApp(request.InstalledAppId)

if err != nil {
common.WriteJsonResp(w, fmt.Errorf("Unable to fetch installed app version details"), nil, http.StatusBadRequest)
}

rbacObjectCurrentForCurrentProject := handler.enforcerUtilHelm.GetHelmObject(installedApp.ClusterId, installedApp.Namespace, installedApp.AppName)

ok := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionUpdate, rbacObjectCurrentForCurrentProject)

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

rbacObjectForRequestedProject := handler.enforcerUtilHelm.GetHelmObjectByTeamIdAndClusterId(request.TeamId, installedApp.ClusterId, installedApp.Namespace, installedApp.AppName)

ok = handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionUpdate, rbacObjectForRequestedProject)

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

}

err = handler.appStoreDeploymentService.UpdateProjectHelmApp(&request)

if err != nil {
common.WriteJsonResp(w, err, "error in updating project", http.StatusBadRequest)
} else {
common.WriteJsonResp(w, nil, "Project Updated", http.StatusOK)
}

}
4 changes: 4 additions & 0 deletions api/appStore/deployment/AppStoreDeploymentRouter.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,8 @@ func (router AppStoreDeploymentRouterImpl) Init(configRouter *mux.Router) {

configRouter.Path("/application/version/{installedAppVersionId}").
HandlerFunc(router.appStoreDeploymentRestHandler.GetInstalledAppVersion).Methods("GET")

configRouter.Path("/application/update/project").
HandlerFunc(router.appStoreDeploymentRestHandler.UpdateProjectHelmApp).Methods("PUT")

}
6 changes: 3 additions & 3 deletions api/appStore/deployment/CommonDeploymentRestHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ func (handler *CommonDeploymentRestHandlerImpl) GetDeploymentHistory(w http.Resp
var rbacObject2 string
token := r.Header.Get("token")
if util2.IsHelmApp(appOfferingMode) {
rbacObject = handler.enforcerUtilHelm.GetHelmObjectByClusterId(installedAppDto.ClusterId, installedAppDto.Namespace, installedAppDto.AppName)
rbacObject = handler.enforcerUtilHelm.GetHelmObject(installedAppDto.ClusterId, installedAppDto.Namespace, installedAppDto.AppName)
} else {
rbacObject, rbacObject2 = handler.enforcerUtil.GetHelmObjectByAppNameAndEnvId(installedAppDto.AppName, installedAppDto.EnvironmentId)
}
Expand Down Expand Up @@ -201,7 +201,7 @@ func (handler *CommonDeploymentRestHandlerImpl) GetDeploymentHistoryValues(w htt
var rbacObject2 string
token := r.Header.Get("token")
if util2.IsHelmApp(appOfferingMode) {
rbacObject = handler.enforcerUtilHelm.GetHelmObjectByClusterId(installedAppDto.ClusterId, installedAppDto.Namespace, installedAppDto.AppName)
rbacObject = handler.enforcerUtilHelm.GetHelmObject(installedAppDto.ClusterId, installedAppDto.Namespace, installedAppDto.AppName)
} else {
rbacObject, rbacObject2 = handler.enforcerUtil.GetHelmObjectByAppNameAndEnvId(installedAppDto.AppName, installedAppDto.EnvironmentId)
}
Expand Down Expand Up @@ -269,7 +269,7 @@ func (handler *CommonDeploymentRestHandlerImpl) RollbackApplication(w http.Respo
var rbacObject2 string
token := r.Header.Get("token")
if util2.IsHelmApp(appOfferingMode) {
rbacObject = handler.enforcerUtilHelm.GetHelmObjectByClusterId(installedAppDto.ClusterId, installedAppDto.Namespace, installedAppDto.AppName)
rbacObject = handler.enforcerUtilHelm.GetHelmObject(installedAppDto.ClusterId, installedAppDto.Namespace, installedAppDto.AppName)
} else {
rbacObject, rbacObject2 = handler.enforcerUtil.GetHelmObjectByAppNameAndEnvId(installedAppDto.AppName, installedAppDto.EnvironmentId)
}
Expand Down
12 changes: 8 additions & 4 deletions api/helm-app/HelmAppRestHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ func (handler *HelmAppRestHandlerImpl) GetApplicationDetail(w http.ResponseWrite
return
}
// RBAC enforcer applying
rbacObject := handler.enforcerUtil.GetHelmObjectByClusterId(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
rbacObject := handler.enforcerUtil.GetHelmObject(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
token := r.Header.Get("token")
if ok := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, rbacObject); !ok {
common.WriteJsonResp(w, errors.New("unauthorized"), nil, http.StatusForbidden)
Expand Down Expand Up @@ -142,7 +142,7 @@ func (handler *HelmAppRestHandlerImpl) Hibernate(w http.ResponseWriter, r *http.
}

// RBAC enforcer applying
rbacObject := handler.enforcerUtil.GetHelmObjectByClusterId(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
rbacObject := handler.enforcerUtil.GetHelmObject(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
token := r.Header.Get("token")
if ok := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionUpdate, rbacObject); !ok {
common.WriteJsonResp(w, errors.New("unauthorized"), nil, http.StatusForbidden)
Expand Down Expand Up @@ -171,7 +171,7 @@ func (handler *HelmAppRestHandlerImpl) UnHibernate(w http.ResponseWriter, r *htt
return
}
// RBAC enforcer applying
rbacObject := handler.enforcerUtil.GetHelmObjectByClusterId(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
rbacObject := handler.enforcerUtil.GetHelmObject(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
token := r.Header.Get("token")
if ok := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionUpdate, rbacObject); !ok {
common.WriteJsonResp(w, errors.New("unauthorized"), nil, http.StatusForbidden)
Expand All @@ -195,7 +195,7 @@ func (handler *HelmAppRestHandlerImpl) GetReleaseInfo(w http.ResponseWriter, r *
return
}
// RBAC enforcer applying
rbacObject := handler.enforcerUtil.GetHelmObjectByClusterId(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
rbacObject := handler.enforcerUtil.GetHelmObject(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
token := r.Header.Get("token")
if ok := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, rbacObject); !ok {
common.WriteJsonResp(w, errors.New("unauthorized"), nil, http.StatusForbidden)
Expand Down Expand Up @@ -411,6 +411,8 @@ func convertToInstalledAppInfo(installedApp *appStoreBean.InstallAppVersionDTO)
EnvironmentId: installedApp.EnvironmentId,
AppStoreChartRepoName: chartInfo.InstallAppVersionChartRepoDTO.RepoName,
AppStoreChartName: chartInfo.ChartName,
TeamId: installedApp.TeamId,
TeamName: installedApp.TeamName,
}
}

Expand Down Expand Up @@ -440,4 +442,6 @@ type InstalledAppInfo struct {
EnvironmentId int `json:"environmentId"`
AppStoreChartRepoName string `json:"appStoreChartRepoName"`
AppStoreChartName string `json:"appStoreChartName"`
TeamId int `json:"teamId"`
TeamName string `json:"teamName"`
}
2 changes: 1 addition & 1 deletion api/helm-app/HelmAppService.go
Original file line number Diff line number Diff line change
Expand Up @@ -754,7 +754,7 @@ func (impl *HelmAppServiceImpl) appListRespProtoTransformer(deployedApps *Deploy
ClusterId: &deployedapp.EnvironmentDetail.ClusterId,
},
}
rbacObject := impl.enforcerUtil.GetHelmObjectByClusterId(int(deployedapp.EnvironmentDetail.ClusterId), deployedapp.EnvironmentDetail.Namespace, deployedapp.AppName)
rbacObject := impl.enforcerUtil.GetHelmObject(int(deployedapp.EnvironmentDetail.ClusterId), deployedapp.EnvironmentDetail.Namespace, deployedapp.AppName)
isValidAuth := helmAuth(token, rbacObject)
if isValidAuth {
HelmApps = append(HelmApps, helmApp)
Expand Down
Loading