mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 22:27:22 +00:00
feat(cli): warning when logged in and using token at the same time
This commit is contained in:
@@ -94,9 +94,9 @@ var exportCmd = &cobra.Command{
|
|||||||
IncludeImport: includeImports,
|
IncludeImport: includeImports,
|
||||||
}
|
}
|
||||||
|
|
||||||
if token != nil && token.Type == util.SERVICE_TOKEN_IDENTIFIER {
|
if util.ShouldUseInfisicalToken(token, []string{util.SERVICE_TOKEN_IDENTIFIER}) {
|
||||||
request.InfisicalToken = token.Token
|
request.InfisicalToken = token.Token
|
||||||
} else if token != nil && token.Type == util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER {
|
} else if util.ShouldUseInfisicalToken(token, []string{util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER}) {
|
||||||
request.UniversalAuthAccessToken = token.Token
|
request.UniversalAuthAccessToken = token.Token
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,9 +141,9 @@ var exportCmd = &cobra.Command{
|
|||||||
|
|
||||||
authParams := models.ExpandSecretsAuthentication{}
|
authParams := models.ExpandSecretsAuthentication{}
|
||||||
|
|
||||||
if token != nil && token.Type == util.SERVICE_TOKEN_IDENTIFIER {
|
if util.ShouldUseInfisicalToken(token, []string{util.SERVICE_TOKEN_IDENTIFIER}) {
|
||||||
authParams.InfisicalToken = token.Token
|
authParams.InfisicalToken = token.Token
|
||||||
} else if token != nil && token.Type == util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER {
|
} else if util.ShouldUseInfisicalToken(token, []string{util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER}) {
|
||||||
authParams.UniversalAuthAccessToken = token.Token
|
authParams.UniversalAuthAccessToken = token.Token
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,9 +53,9 @@ var getCmd = &cobra.Command{
|
|||||||
FoldersPath: foldersPath,
|
FoldersPath: foldersPath,
|
||||||
}
|
}
|
||||||
|
|
||||||
if token != nil && token.Type == util.SERVICE_TOKEN_IDENTIFIER {
|
if util.ShouldUseInfisicalToken(token, []string{util.SERVICE_TOKEN_IDENTIFIER}) {
|
||||||
request.InfisicalToken = token.Token
|
request.InfisicalToken = token.Token
|
||||||
} else if token != nil && token.Type == util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER {
|
} else if util.ShouldUseInfisicalToken(token, []string{util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER}) {
|
||||||
request.UniversalAuthAccessToken = token.Token
|
request.UniversalAuthAccessToken = token.Token
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ var createCmd = &cobra.Command{
|
|||||||
WorkspaceId: projectId,
|
WorkspaceId: projectId,
|
||||||
}
|
}
|
||||||
|
|
||||||
if token != nil && (token.Type == util.SERVICE_TOKEN_IDENTIFIER || token.Type == util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER) {
|
if util.ShouldUseInfisicalToken(token, nil) {
|
||||||
params.InfisicalToken = token.Token
|
params.InfisicalToken = token.Token
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,7 +193,7 @@ var deleteCmd = &cobra.Command{
|
|||||||
FolderPath: folderPath,
|
FolderPath: folderPath,
|
||||||
}
|
}
|
||||||
|
|
||||||
if token != nil && (token.Type == util.SERVICE_TOKEN_IDENTIFIER || token.Type == util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER) {
|
if util.ShouldUseInfisicalToken(token, nil) {
|
||||||
params.InfisicalToken = token.Token
|
params.InfisicalToken = token.Token
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ func init() {
|
|||||||
rootCmd.PersistentPreRun = func(cmd *cobra.Command, args []string) {
|
rootCmd.PersistentPreRun = func(cmd *cobra.Command, args []string) {
|
||||||
silent, err := cmd.Flags().GetBool("silent")
|
silent, err := cmd.Flags().GetBool("silent")
|
||||||
config.INFISICAL_URL = util.AppendAPIEndpoint(config.INFISICAL_URL)
|
config.INFISICAL_URL = util.AppendAPIEndpoint(config.INFISICAL_URL)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
util.HandleError(err)
|
util.HandleError(err)
|
||||||
}
|
}
|
||||||
@@ -51,6 +52,8 @@ func init() {
|
|||||||
if !util.IsRunningInDocker() && !silent {
|
if !util.IsRunningInDocker() && !silent {
|
||||||
util.CheckForUpdate()
|
util.CheckForUpdate()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
config.INFISICAL_SILENT_MODE = silent
|
||||||
}
|
}
|
||||||
|
|
||||||
// if config.INFISICAL_URL is set to the default value, check if INFISICAL_URL is set in the environment
|
// if config.INFISICAL_URL is set to the default value, check if INFISICAL_URL is set in the environment
|
||||||
|
|||||||
@@ -439,9 +439,9 @@ func executeCommandWithWatchMode(commandFlag string, args []string, watchModeInt
|
|||||||
|
|
||||||
func fetchAndFormatSecretsForShell(request models.GetAllSecretsParameters, projectConfigDir string, secretOverriding bool, shouldExpandSecrets bool, token *models.TokenDetails) (models.InjectableEnvironmentResult, error) {
|
func fetchAndFormatSecretsForShell(request models.GetAllSecretsParameters, projectConfigDir string, secretOverriding bool, shouldExpandSecrets bool, token *models.TokenDetails) (models.InjectableEnvironmentResult, error) {
|
||||||
|
|
||||||
if token != nil && token.Type == util.SERVICE_TOKEN_IDENTIFIER {
|
if util.ShouldUseInfisicalToken(token, []string{util.SERVICE_TOKEN_IDENTIFIER}) {
|
||||||
request.InfisicalToken = token.Token
|
request.InfisicalToken = token.Token
|
||||||
} else if token != nil && token.Type == util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER {
|
} else if util.ShouldUseInfisicalToken(token, []string{util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER}) {
|
||||||
request.UniversalAuthAccessToken = token.Token
|
request.UniversalAuthAccessToken = token.Token
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -461,9 +461,9 @@ func fetchAndFormatSecretsForShell(request models.GetAllSecretsParameters, proje
|
|||||||
|
|
||||||
authParams := models.ExpandSecretsAuthentication{}
|
authParams := models.ExpandSecretsAuthentication{}
|
||||||
|
|
||||||
if token != nil && token.Type == util.SERVICE_TOKEN_IDENTIFIER {
|
if util.ShouldUseInfisicalToken(token, []string{util.SERVICE_TOKEN_IDENTIFIER}) {
|
||||||
authParams.InfisicalToken = token.Token
|
authParams.InfisicalToken = token.Token
|
||||||
} else if token != nil && token.Type == util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER {
|
} else if util.ShouldUseInfisicalToken(token, []string{util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER}) {
|
||||||
authParams.UniversalAuthAccessToken = token.Token
|
authParams.UniversalAuthAccessToken = token.Token
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+16
-14
@@ -87,9 +87,9 @@ var secretsCmd = &cobra.Command{
|
|||||||
Recursive: recursive,
|
Recursive: recursive,
|
||||||
}
|
}
|
||||||
|
|
||||||
if token != nil && token.Type == util.SERVICE_TOKEN_IDENTIFIER {
|
if util.ShouldUseInfisicalToken(token, []string{util.SERVICE_TOKEN_IDENTIFIER}) {
|
||||||
request.InfisicalToken = token.Token
|
request.InfisicalToken = token.Token
|
||||||
} else if token != nil && token.Type == util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER {
|
} else if util.ShouldUseInfisicalToken(token, []string{util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER}) {
|
||||||
request.UniversalAuthAccessToken = token.Token
|
request.UniversalAuthAccessToken = token.Token
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,9 +106,10 @@ var secretsCmd = &cobra.Command{
|
|||||||
|
|
||||||
if shouldExpandSecrets {
|
if shouldExpandSecrets {
|
||||||
authParams := models.ExpandSecretsAuthentication{}
|
authParams := models.ExpandSecretsAuthentication{}
|
||||||
if token != nil && token.Type == util.SERVICE_TOKEN_IDENTIFIER {
|
|
||||||
|
if util.ShouldUseInfisicalToken(token, []string{util.SERVICE_TOKEN_IDENTIFIER}) {
|
||||||
authParams.InfisicalToken = token.Token
|
authParams.InfisicalToken = token.Token
|
||||||
} else if token != nil && token.Type == util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER {
|
} else if util.ShouldUseInfisicalToken(token, []string{util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER}) {
|
||||||
authParams.UniversalAuthAccessToken = token.Token
|
authParams.UniversalAuthAccessToken = token.Token
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -160,7 +161,7 @@ var secretsSetCmd = &cobra.Command{
|
|||||||
util.HandleError(err, "Unable to parse flag")
|
util.HandleError(err, "Unable to parse flag")
|
||||||
}
|
}
|
||||||
|
|
||||||
if (token == nil) {
|
if token == nil {
|
||||||
util.RequireLocalWorkspaceFile()
|
util.RequireLocalWorkspaceFile()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,7 +173,7 @@ var secretsSetCmd = &cobra.Command{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
projectId, err := cmd.Flags().GetString("projectId")
|
projectId, err := cmd.Flags().GetString("projectId")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
util.HandleError(err, "Unable to parse flag")
|
util.HandleError(err, "Unable to parse flag")
|
||||||
}
|
}
|
||||||
@@ -188,7 +189,7 @@ var secretsSetCmd = &cobra.Command{
|
|||||||
}
|
}
|
||||||
|
|
||||||
var secretOperations []models.SecretSetOperation
|
var secretOperations []models.SecretSetOperation
|
||||||
if token != nil && (token.Type == util.SERVICE_TOKEN_IDENTIFIER || token.Type == util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER) {
|
if util.ShouldUseInfisicalToken(token, nil) {
|
||||||
if projectId == "" {
|
if projectId == "" {
|
||||||
util.PrintErrorMessageAndExit("When using service tokens or machine identities, you must set the --projectId flag")
|
util.PrintErrorMessageAndExit("When using service tokens or machine identities, you must set the --projectId flag")
|
||||||
}
|
}
|
||||||
@@ -282,7 +283,7 @@ var secretsDeleteCmd = &cobra.Command{
|
|||||||
projectId = workspaceFile.WorkspaceId
|
projectId = workspaceFile.WorkspaceId
|
||||||
}
|
}
|
||||||
|
|
||||||
if token != nil && (token.Type == util.SERVICE_TOKEN_IDENTIFIER || token.Type == util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER) {
|
if util.ShouldUseInfisicalToken(token, nil) {
|
||||||
httpClient.SetAuthToken(token.Token)
|
httpClient.SetAuthToken(token.Token)
|
||||||
} else {
|
} else {
|
||||||
util.RequireLogin()
|
util.RequireLogin()
|
||||||
@@ -390,9 +391,9 @@ func getSecretsByNames(cmd *cobra.Command, args []string) {
|
|||||||
Recursive: recursive,
|
Recursive: recursive,
|
||||||
}
|
}
|
||||||
|
|
||||||
if token != nil && token.Type == util.SERVICE_TOKEN_IDENTIFIER {
|
if util.ShouldUseInfisicalToken(token, []string{util.SERVICE_TOKEN_IDENTIFIER}) {
|
||||||
request.InfisicalToken = token.Token
|
request.InfisicalToken = token.Token
|
||||||
} else if token != nil && token.Type == util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER {
|
} else if util.ShouldUseInfisicalToken(token, []string{util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER}) {
|
||||||
request.UniversalAuthAccessToken = token.Token
|
request.UniversalAuthAccessToken = token.Token
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -409,9 +410,10 @@ func getSecretsByNames(cmd *cobra.Command, args []string) {
|
|||||||
|
|
||||||
if shouldExpand {
|
if shouldExpand {
|
||||||
authParams := models.ExpandSecretsAuthentication{}
|
authParams := models.ExpandSecretsAuthentication{}
|
||||||
if token != nil && token.Type == util.SERVICE_TOKEN_IDENTIFIER {
|
|
||||||
|
if util.ShouldUseInfisicalToken(token, []string{util.SERVICE_TOKEN_IDENTIFIER}) {
|
||||||
authParams.InfisicalToken = token.Token
|
authParams.InfisicalToken = token.Token
|
||||||
} else if token != nil && token.Type == util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER {
|
} else if util.ShouldUseInfisicalToken(token, []string{util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER}) {
|
||||||
authParams.UniversalAuthAccessToken = token.Token
|
authParams.UniversalAuthAccessToken = token.Token
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -485,9 +487,9 @@ func generateExampleEnv(cmd *cobra.Command, args []string) {
|
|||||||
IncludeImport: true,
|
IncludeImport: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
if token != nil && token.Type == util.SERVICE_TOKEN_IDENTIFIER {
|
if util.ShouldUseInfisicalToken(token, []string{util.SERVICE_TOKEN_IDENTIFIER}) {
|
||||||
request.InfisicalToken = token.Token
|
request.InfisicalToken = token.Token
|
||||||
} else if token != nil && token.Type == util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER {
|
} else if util.ShouldUseInfisicalToken(token, []string{util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER}) {
|
||||||
request.UniversalAuthAccessToken = token.Token
|
request.UniversalAuthAccessToken = token.Token
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
|
var INFISICAL_SILENT_MODE bool
|
||||||
var INFISICAL_URL string
|
var INFISICAL_URL string
|
||||||
var INFISICAL_URL_MANUAL_OVERRIDE string
|
var INFISICAL_URL_MANUAL_OVERRIDE string
|
||||||
var INFISICAL_LOGIN_URL string
|
var INFISICAL_LOGIN_URL string
|
||||||
|
|||||||
@@ -63,8 +63,9 @@ type DynamicSecretLease struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type TokenDetails struct {
|
type TokenDetails struct {
|
||||||
Type string
|
Type string
|
||||||
Token string
|
Token string
|
||||||
|
PassedAsFlag bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type SingleFolder struct {
|
type SingleFolder struct {
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
package util
|
package util
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/Infisical/infisical-merge/packages/config"
|
||||||
|
"github.com/Infisical/infisical-merge/packages/models"
|
||||||
|
)
|
||||||
|
|
||||||
type AuthStrategyType string
|
type AuthStrategyType string
|
||||||
|
|
||||||
var AuthStrategy = struct {
|
var AuthStrategy = struct {
|
||||||
@@ -43,3 +50,39 @@ func IsAuthMethodValid(authMethod string, allowUserAuth bool) (isValid bool, str
|
|||||||
}
|
}
|
||||||
return false, ""
|
return false, ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ShouldUseInfisicalToken(token *models.TokenDetails, validTokenTypes []string) bool {
|
||||||
|
|
||||||
|
if token == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// If nil is passed, we assume both service and universal tokens are acceptable.
|
||||||
|
if validTokenTypes == nil {
|
||||||
|
validTokenTypes = []string{SERVICE_TOKEN_IDENTIFIER, UNIVERSAL_AUTH_TOKEN_IDENTIFIER}
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tokenType := range validTokenTypes {
|
||||||
|
if token.Type != tokenType {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
details, err := GetCurrentLoggedInUserDetails()
|
||||||
|
if err == nil && details.IsUserLoggedIn && !details.LoginExpired && !config.INFISICAL_SILENT_MODE {
|
||||||
|
|
||||||
|
var usingFrom string
|
||||||
|
if token.PassedAsFlag {
|
||||||
|
usingFrom = "--token flag"
|
||||||
|
} else {
|
||||||
|
usingFrom = "INFISICAL_TOKEN environment variable"
|
||||||
|
}
|
||||||
|
PrintWarning(fmt.Sprintf("You are currently logged in, but the command will be using the token provided from the %s.", usingFrom))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -87,6 +87,8 @@ func GetInfisicalToken(cmd *cobra.Command) (token *models.TokenDetails, err erro
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
passedAsFlag := infisicalToken != ""
|
||||||
|
|
||||||
if infisicalToken == "" { // If no flag is passed, we first check for the universal auth access token env variable.
|
if infisicalToken == "" { // If no flag is passed, we first check for the universal auth access token env variable.
|
||||||
infisicalToken = os.Getenv(INFISICAL_UNIVERSAL_AUTH_ACCESS_TOKEN_NAME)
|
infisicalToken = os.Getenv(INFISICAL_UNIVERSAL_AUTH_ACCESS_TOKEN_NAME)
|
||||||
|
|
||||||
@@ -101,14 +103,16 @@ func GetInfisicalToken(cmd *cobra.Command) (token *models.TokenDetails, err erro
|
|||||||
|
|
||||||
if strings.HasPrefix(infisicalToken, "st.") {
|
if strings.HasPrefix(infisicalToken, "st.") {
|
||||||
return &models.TokenDetails{
|
return &models.TokenDetails{
|
||||||
Type: SERVICE_TOKEN_IDENTIFIER,
|
Type: SERVICE_TOKEN_IDENTIFIER,
|
||||||
Token: infisicalToken,
|
Token: infisicalToken,
|
||||||
|
PassedAsFlag: passedAsFlag,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return &models.TokenDetails{
|
return &models.TokenDetails{
|
||||||
Type: UNIVERSAL_AUTH_TOKEN_IDENTIFIER,
|
Type: UNIVERSAL_AUTH_TOKEN_IDENTIFIER,
|
||||||
Token: infisicalToken,
|
Token: infisicalToken,
|
||||||
|
PassedAsFlag: passedAsFlag,
|
||||||
}, nil
|
}, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user