mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 16:27:46 +00:00
add ValidateEnvironmentName method
This commit is contained in:
@@ -166,3 +166,24 @@ func CallIsAuthenticated(httpClient *resty.Client) bool {
|
|||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CallGetAccessibleEnvironments(httpClient *resty.Client, request GetAccessibleEnvironmentsRequest) (GetAccessibleEnvironmentsResponse, error) {
|
||||||
|
var accessibleEnvironmentsResponse GetAccessibleEnvironmentsResponse
|
||||||
|
response, err := httpClient.
|
||||||
|
R().
|
||||||
|
SetResult(&accessibleEnvironmentsResponse).
|
||||||
|
SetHeader("User-Agent", USER_AGENT).
|
||||||
|
Get(fmt.Sprintf("%v/v2/workspace/%s/environments", config.INFISICAL_URL, request.WorkspaceId))
|
||||||
|
|
||||||
|
log.Debugln(fmt.Errorf("CallGetAccessibleEnvironments: Unsuccessful response: [response=%v]", response))
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return GetAccessibleEnvironmentsResponse{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if response.IsError() {
|
||||||
|
return GetAccessibleEnvironmentsResponse{}, fmt.Errorf("CallGetAccessibleEnvironments: Unsuccessful response: [response=%v]", response)
|
||||||
|
}
|
||||||
|
|
||||||
|
return accessibleEnvironmentsResponse, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -250,3 +250,15 @@ type GetServiceTokenDetailsResponse struct {
|
|||||||
UpdatedAt time.Time `json:"updatedAt"`
|
UpdatedAt time.Time `json:"updatedAt"`
|
||||||
V int `json:"__v"`
|
V int `json:"__v"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type GetAccessibleEnvironmentsRequest struct {
|
||||||
|
WorkspaceId string `json:"workspaceId"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetAccessibleEnvironmentsResponse struct {
|
||||||
|
AccessibleEnvironments []struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Slug string `json:"slug"`
|
||||||
|
IsWriteDenied bool `json:"isWriteDenied"`
|
||||||
|
} `json:"accessibleEnvironments"`
|
||||||
|
}
|
||||||
|
|||||||
@@ -64,10 +64,6 @@ var runCmd = &cobra.Command{
|
|||||||
util.HandleError(err, "Unable to parse flag")
|
util.HandleError(err, "Unable to parse flag")
|
||||||
}
|
}
|
||||||
|
|
||||||
// if !util.IsSecretEnvironmentValid(envName) {
|
|
||||||
// util.PrintMessageAndExit("Invalid environment name passed. Environment names can only be prod, dev, test or staging")
|
|
||||||
// }
|
|
||||||
|
|
||||||
secretOverriding, err := cmd.Flags().GetBool("secret-overriding")
|
secretOverriding, err := cmd.Flags().GetBool("secret-overriding")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
util.HandleError(err, "Unable to parse flag")
|
util.HandleError(err, "Unable to parse flag")
|
||||||
|
|||||||
@@ -130,6 +130,12 @@ func GetAllEnvironmentVariables(params models.GetAllSecretsParameters) ([]models
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Verify environment
|
||||||
|
err = ValidateEnvironmentName(params.Environment, workspaceFile.WorkspaceId, loggedInUserDetails.UserCredentials)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("unable to validate environment name because [err=%s]", err)
|
||||||
|
}
|
||||||
|
|
||||||
secretsToReturn, errorToReturn = GetPlainTextSecretsViaJTW(loggedInUserDetails.UserCredentials.JTWToken, loggedInUserDetails.UserCredentials.PrivateKey, workspaceFile.WorkspaceId, params.Environment)
|
secretsToReturn, errorToReturn = GetPlainTextSecretsViaJTW(loggedInUserDetails.UserCredentials.JTWToken, loggedInUserDetails.UserCredentials.PrivateKey, workspaceFile.WorkspaceId, params.Environment)
|
||||||
log.Debugf("GetAllEnvironmentVariables: Trying to fetch secrets JTW token [err=%s]", errorToReturn)
|
log.Debugf("GetAllEnvironmentVariables: Trying to fetch secrets JTW token [err=%s]", errorToReturn)
|
||||||
|
|
||||||
@@ -156,6 +162,33 @@ func GetAllEnvironmentVariables(params models.GetAllSecretsParameters) ([]models
|
|||||||
return secretsToReturn, errorToReturn
|
return secretsToReturn, errorToReturn
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ValidateEnvironmentName(environmentName string, workspaceId string, userLoggedInDetails models.UserCredentials) error {
|
||||||
|
httpClient := resty.New()
|
||||||
|
httpClient.SetAuthToken(userLoggedInDetails.JTWToken).
|
||||||
|
SetHeader("Accept", "application/json")
|
||||||
|
|
||||||
|
response, err := api.CallGetAccessibleEnvironments(httpClient, api.GetAccessibleEnvironmentsRequest{WorkspaceId: workspaceId})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
listOfEnvSlugs := []string{}
|
||||||
|
mapOfEnvSlugs := make(map[string]interface{})
|
||||||
|
|
||||||
|
for _, environment := range response.AccessibleEnvironments {
|
||||||
|
listOfEnvSlugs = append(listOfEnvSlugs, environment.Slug)
|
||||||
|
mapOfEnvSlugs[environment.Slug] = environment
|
||||||
|
}
|
||||||
|
|
||||||
|
_, exists := mapOfEnvSlugs[environmentName]
|
||||||
|
if !exists {
|
||||||
|
HandleError(fmt.Errorf("the environment [%s] does not exist in project with [id=%s]. Only [%s] are available", environmentName, workspaceId, strings.Join(listOfEnvSlugs, ",")))
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func getExpandedEnvVariable(secrets []models.SingleEnvironmentVariable, variableWeAreLookingFor string, hashMapOfCompleteVariables map[string]string, hashMapOfSelfRefs map[string]string) string {
|
func getExpandedEnvVariable(secrets []models.SingleEnvironmentVariable, variableWeAreLookingFor string, hashMapOfCompleteVariables map[string]string, hashMapOfSelfRefs map[string]string) string {
|
||||||
if value, found := hashMapOfCompleteVariables[variableWeAreLookingFor]; found {
|
if value, found := hashMapOfCompleteVariables[variableWeAreLookingFor]; found {
|
||||||
return value
|
return value
|
||||||
|
|||||||
Reference in New Issue
Block a user