diff --git a/cli/packages/api/api.go b/cli/packages/api/api.go index 4ace4c387..87832a537 100644 --- a/cli/packages/api/api.go +++ b/cli/packages/api/api.go @@ -160,6 +160,22 @@ func CallVerifyMfaToken(httpClient *resty.Client, request VerifyMfaTokenRequest) SetBody(request). Post(fmt.Sprintf("%v/v2/auth/mfa/verify", config.INFISICAL_URL)) + cookies := response.Cookies() + // Find a cookie by name + cookieName := "jid" + var refreshToken *http.Cookie + for _, cookie := range cookies { + if cookie.Name == cookieName { + refreshToken = cookie + break + } + } + + // When MFA is enabled + if refreshToken != nil { + verifyMfaTokenResponse.RefreshToken = refreshToken.Value + } + if err != nil { return nil, nil, fmt.Errorf("CallVerifyMfaToken: Unable to complete api request [err=%s]", err) } @@ -191,7 +207,10 @@ func CallLogin2V2(httpClient *resty.Client, request GetLoginTwoV2Request) (GetLo } } - loginTwoV2Response.RefreshToken = refreshToken.Value + // When MFA is enabled + if refreshToken != nil { + loginTwoV2Response.RefreshToken = refreshToken.Value + } if err != nil { return GetLoginTwoV2Response{}, fmt.Errorf("CallLogin2V2: Unable to complete api request [err=%s]", err) diff --git a/cli/packages/api/model.go b/cli/packages/api/model.go index bce2a34d6..30896b819 100644 --- a/cli/packages/api/model.go +++ b/cli/packages/api/model.go @@ -299,6 +299,7 @@ type VerifyMfaTokenResponse struct { ProtectedKey string `json:"protectedKey"` ProtectedKeyIV string `json:"protectedKeyIV"` ProtectedKeyTag string `json:"protectedKeyTag"` + RefreshToken string `json:"refreshToken"` } type VerifyMfaTokenErrorResponse struct { diff --git a/cli/packages/cmd/login.go b/cli/packages/cmd/login.go index ab0f531c2..1329b1d2a 100644 --- a/cli/packages/cmd/login.go +++ b/cli/packages/cmd/login.go @@ -143,7 +143,7 @@ var loginCmd = &cobra.Command{ loginTwoResponse.Tag = verifyMFAresponse.Tag loginTwoResponse.Token = verifyMFAresponse.Token loginTwoResponse.EncryptionVersion = verifyMFAresponse.EncryptionVersion - + loginTwoResponse.RefreshToken = verifyMFAresponse.RefreshToken break } }