From 735554bbbdd95cf997dedd1ab5ec6fa184682dcf Mon Sep 17 00:00:00 2001 From: ashish sonam Date: Wed, 18 Oct 2023 16:20:20 +0530 Subject: [PATCH 1/2] exposed api for fetching disabled git provider --- .../app/AutoCompleteRestHandler.go | 28 +++++++++++++++++++ api/router/PipelineConfigRouter.go | 1 + .../sql/repository/GitProviderRepository.go | 11 ++++++++ pkg/pipeline/GitRegistryConfig.go | 19 +++++++++++++ 4 files changed, 59 insertions(+) diff --git a/api/restHandler/app/AutoCompleteRestHandler.go b/api/restHandler/app/AutoCompleteRestHandler.go index 3e7e640406..9bf855cfc8 100644 --- a/api/restHandler/app/AutoCompleteRestHandler.go +++ b/api/restHandler/app/AutoCompleteRestHandler.go @@ -17,6 +17,7 @@ import ( type DevtronAppAutoCompleteRestHandler interface { GitListAutocomplete(w http.ResponseWriter, r *http.Request) + DisabledGitListAutocomplete(w http.ResponseWriter, r *http.Request) RegistriesListAutocomplete(w http.ResponseWriter, r *http.Request) TeamListAutocomplete(w http.ResponseWriter, r *http.Request) EnvironmentListAutocomplete(w http.ResponseWriter, r *http.Request) @@ -169,6 +170,33 @@ func (handler PipelineConfigRestHandlerImpl) GitListAutocomplete(w http.Response common.WriteJsonResp(w, err, res, http.StatusOK) } +func (handler PipelineConfigRestHandlerImpl) DisabledGitListAutocomplete(w http.ResponseWriter, r *http.Request) { + token := r.Header.Get("token") + vars := mux.Vars(r) + appId, err := strconv.Atoi(vars["appId"]) + if err != nil { + common.WriteJsonResp(w, err, nil, http.StatusBadRequest) + return + } + providerId := vars["providerId"] + handler.Logger.Infow("request payload, DisabledGitListAutocomplete", "appId", appId) + //RBAC + object := handler.enforcerUtil.GetAppRBACNameByAppId(appId) + if ok := handler.enforcer.Enforce(token, casbin.ResourceApplications, casbin.ActionGet, object); !ok { + common.WriteJsonResp(w, err, "Unauthorized User", http.StatusForbidden) + return + } + //RBAC + res, err := handler.gitRegistryConfig.FetchOneDisabledGitProvider(providerId) + if err != nil { + handler.Logger.Errorw("service err, DisabledGitListAutocomplete", "err", err, "appId", appId) + common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) + return + } + + common.WriteJsonResp(w, err, res, http.StatusOK) +} + func (handler PipelineConfigRestHandlerImpl) RegistriesListAutocomplete(w http.ResponseWriter, r *http.Request) { token := r.Header.Get("token") vars := mux.Vars(r) diff --git a/api/router/PipelineConfigRouter.go b/api/router/PipelineConfigRouter.go index e09d34cf5d..1a32c28f94 100644 --- a/api/router/PipelineConfigRouter.go +++ b/api/router/PipelineConfigRouter.go @@ -122,6 +122,7 @@ func (router PipelineConfigRouterImpl) initPipelineConfigRouter(configRouter *mu configRouter.Path("/{appId}/autocomplete/environment").HandlerFunc(router.restHandler.EnvironmentListAutocomplete).Methods("GET") configRouter.Path("/{appId}/autocomplete/git").HandlerFunc(router.restHandler.GitListAutocomplete).Methods("GET") + configRouter.Path("/{appId}/autocomplete/disabled-git/{providerId}").HandlerFunc(router.restHandler.DisabledGitListAutocomplete).Methods("GET") configRouter.Path("/{appId}/autocomplete/docker").HandlerFunc(router.restHandler.RegistriesListAutocomplete).Methods("GET") configRouter.Path("/{appId}/autocomplete/team").HandlerFunc(router.restHandler.TeamListAutocomplete).Methods("GET") diff --git a/internal/sql/repository/GitProviderRepository.go b/internal/sql/repository/GitProviderRepository.go index f2b73d96b3..e182794568 100644 --- a/internal/sql/repository/GitProviderRepository.go +++ b/internal/sql/repository/GitProviderRepository.go @@ -56,6 +56,7 @@ type GitProviderRepository interface { FindByUrl(providerUrl string) (GitProvider, error) Update(gitProvider *GitProvider) error MarkProviderDeleted(gitProvider *GitProvider) error + FindDisabledById(providerId string) (GitProvider, error) } type GitProviderRepositoryImpl struct { @@ -89,6 +90,16 @@ func (impl GitProviderRepositoryImpl) FindAllActiveForAutocomplete() ([]GitProvi return providers, err } +func (impl GitProviderRepositoryImpl) FindDisabledById(providerId string) (GitProvider, error) { + var provider GitProvider + err := impl.dbConnection.Model(&provider). + Where("id = ?", providerId). + Where("active = ?", false). + Column("id", "name", "url", "auth_mode"). + Where("deleted = ?", false).Select() + return provider, err +} + func (impl GitProviderRepositoryImpl) FindAll() ([]GitProvider, error) { var providers []GitProvider err := impl.dbConnection.Model(&providers). diff --git a/pkg/pipeline/GitRegistryConfig.go b/pkg/pipeline/GitRegistryConfig.go index ccea48d7f4..df9e004b17 100644 --- a/pkg/pipeline/GitRegistryConfig.go +++ b/pkg/pipeline/GitRegistryConfig.go @@ -36,6 +36,7 @@ type GitRegistryConfig interface { GetAll() ([]GitRegistry, error) FetchAllGitProviders() ([]GitRegistry, error) FetchOneGitProvider(id string) (*GitRegistry, error) + FetchOneDisabledGitProvider(id string) (*GitRegistry, error) Update(request *GitRegistry) (*GitRegistry, error) Delete(request *GitRegistry) error } @@ -201,6 +202,24 @@ func (impl GitRegistryConfigImpl) FetchOneGitProvider(providerId string) (*GitRe return providerRes, err } +func (impl GitRegistryConfigImpl) FetchOneDisabledGitProvider(providerId string) (*GitRegistry, error) { + impl.logger.Debug("fetch disabled git provider by ID from db") + provider, err := impl.gitProviderRepo.FindDisabledById(providerId) + if err != nil { + impl.logger.Errorw("error in fetching disabled git providers", "err", err) + return nil, err + } + + providerRes := &GitRegistry{ + Id: provider.Id, + Name: provider.Name, + Url: provider.Url, + AuthMode: provider.AuthMode, + } + + return providerRes, err +} + func (impl GitRegistryConfigImpl) Update(request *GitRegistry) (*GitRegistry, error) { impl.logger.Debugw("get repo create request", "req", request) From f35bcbbfaa18d71266326471b736ebc4198a7507 Mon Sep 17 00:00:00 2001 From: ashish sonam Date: Thu, 19 Oct 2023 18:44:02 +0530 Subject: [PATCH 2/2] added providerId in logger --- api/restHandler/app/AutoCompleteRestHandler.go | 2 +- pkg/pipeline/GitRegistryConfig.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/api/restHandler/app/AutoCompleteRestHandler.go b/api/restHandler/app/AutoCompleteRestHandler.go index 9bf855cfc8..86e705f384 100644 --- a/api/restHandler/app/AutoCompleteRestHandler.go +++ b/api/restHandler/app/AutoCompleteRestHandler.go @@ -189,7 +189,7 @@ func (handler PipelineConfigRestHandlerImpl) DisabledGitListAutocomplete(w http. //RBAC res, err := handler.gitRegistryConfig.FetchOneDisabledGitProvider(providerId) if err != nil { - handler.Logger.Errorw("service err, DisabledGitListAutocomplete", "err", err, "appId", appId) + handler.Logger.Errorw("service err, DisabledGitListAutocomplete", "err", err, "appId", appId, "providerId", providerId) common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) return } diff --git a/pkg/pipeline/GitRegistryConfig.go b/pkg/pipeline/GitRegistryConfig.go index df9e004b17..c955b198c1 100644 --- a/pkg/pipeline/GitRegistryConfig.go +++ b/pkg/pipeline/GitRegistryConfig.go @@ -206,7 +206,7 @@ func (impl GitRegistryConfigImpl) FetchOneDisabledGitProvider(providerId string) impl.logger.Debug("fetch disabled git provider by ID from db") provider, err := impl.gitProviderRepo.FindDisabledById(providerId) if err != nil { - impl.logger.Errorw("error in fetching disabled git providers", "err", err) + impl.logger.Errorw("error in fetching disabled git providers", "err", err, "providerId", providerId) return nil, err }