From a97737ab90ce9ffabf3edba1aeb24d1026b57050 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Tue, 26 Mar 2024 23:36:57 +0100 Subject: [PATCH] Feat: Folder support for Machine Identities --- cli/packages/util/helper.go | 47 +++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/cli/packages/util/helper.go b/cli/packages/util/helper.go index 46eacb8af..32da1c6ab 100644 --- a/cli/packages/util/helper.go +++ b/cli/packages/util/helper.go @@ -168,6 +168,53 @@ func RenewUniversalAuthAccessToken(accessToken string) (string, error) { return tokenResponse.AccessToken, nil } +func GetInfisicalUniversalAuthAccessToken(cmd *cobra.Command) (accessToken string, err error) { + + var token string + + universalAuthClientId, err := cmd.Flags().GetString("universal-auth-client-id") + if err != nil { + return token, err + } + universalAuthClientSecret, err := cmd.Flags().GetString("universal-auth-client-secret") + if err != nil { + return token, err + } + + if universalAuthClientId == "" { + universalAuthClientId = os.Getenv(INFISICAL_UNIVERSAL_AUTH_CLIENT_ID) + } + + if universalAuthClientSecret == "" { + universalAuthClientSecret = os.Getenv(INFISICAL_UNIVERSAL_AUTH_CLIENT_SECRET) + } + + if universalAuthClientId != "" || universalAuthClientSecret != "" { + res, err := UniversalAuthLogin(universalAuthClientId, universalAuthClientSecret) + + if err != nil { + return token, err + } + token = res.AccessToken + } + + return token, nil +} + +func UniversalAuthLogin(clientId string, clientSecret string) (api.UniversalAuthLoginResponse, error) { + httpClient := resty.New() + httpClient.SetRetryCount(10000). + SetRetryMaxWaitTime(20 * time.Second). + SetRetryWaitTime(5 * time.Second) + + tokenResponse, err := api.CallUniversalAuthLogin(httpClient, api.UniversalAuthLoginRequest{ClientId: clientId, ClientSecret: clientSecret}) + if err != nil { + return api.UniversalAuthLoginResponse{}, err + } + + return tokenResponse, nil +} + // Checks if the passed in email already exists in the users slice func ConfigContainsEmail(users []models.LoggedInUser, email string) bool { for _, value := range users {