diff --git a/backend/src/lib/config/env.ts b/backend/src/lib/config/env.ts index b0b35cc2f..547de9898 100644 --- a/backend/src/lib/config/env.ts +++ b/backend/src/lib/config/env.ts @@ -101,9 +101,9 @@ const envSchema = z LOOPS_API_KEY: zpStr(z.string().optional()), // jwt options AUTH_SECRET: zpStr(z.string()).default(process.env.JWT_AUTH_SECRET), // for those still using old JWT_AUTH_SECRET - JWT_AUTH_LIFETIME: zpStr(z.string().default("10d")), + JWT_AUTH_LIFETIME: zpStr(z.string().default("1d")), JWT_SIGNUP_LIFETIME: zpStr(z.string().default("15m")), - JWT_REFRESH_LIFETIME: zpStr(z.string().default("90d")), + JWT_REFRESH_LIFETIME: zpStr(z.string().default("14d")), JWT_INVITE_LIFETIME: zpStr(z.string().default("1d")), JWT_MFA_LIFETIME: zpStr(z.string().default("5m")), JWT_PROVIDER_AUTH_LIFETIME: zpStr(z.string().default("15m")), diff --git a/backend/src/server/plugins/auth/inject-identity.ts b/backend/src/server/plugins/auth/inject-identity.ts index f065bfbed..211bcea0c 100644 --- a/backend/src/server/plugins/auth/inject-identity.ts +++ b/backend/src/server/plugins/auth/inject-identity.ts @@ -107,7 +107,7 @@ export const injectIdentity = fp(async (server: FastifyZodProvider) => { server.addHook("onRequest", async (req) => { const appCfg = getConfig(); - if (req.url.includes(".well-known/est") || req.url.includes("/api/v3/auth/")) { + if (req.url.includes(".well-known/est") || req.url.includes("/api/v3/auth/") || req.url === "/api/v1/auth/token") { return; } diff --git a/backend/src/server/routes/v3/login-router.ts b/backend/src/server/routes/v3/login-router.ts index 91df68e16..c7740b665 100644 --- a/backend/src/server/routes/v3/login-router.ts +++ b/backend/src/server/routes/v3/login-router.ts @@ -50,7 +50,8 @@ export const registerLoginRouter = async (server: FastifyZodProvider) => { 200: z.object({ token: z.string(), isMfaEnabled: z.boolean(), - mfaMethod: z.string().optional() + mfaMethod: z.string().optional(), + refreshToken: z.string().optional() }) } }, @@ -101,7 +102,7 @@ export const registerLoginRouter = async (server: FastifyZodProvider) => { maxAge: 0 }); - return { token: tokens.access, isMfaEnabled: false }; + return { token: tokens.access, isMfaEnabled: false, refreshToken: tokens.refresh }; } }); @@ -129,7 +130,8 @@ export const registerLoginRouter = async (server: FastifyZodProvider) => { encryptedPrivateKey: z.string(), iv: z.string(), tag: z.string(), - token: z.string() + token: z.string(), + refreshToken: z.string().optional() }) } }, @@ -172,7 +174,8 @@ export const registerLoginRouter = async (server: FastifyZodProvider) => { tag: data.user.tag, protectedKey: data.user.protectedKey || null, protectedKeyIV: data.user.protectedKeyIV || null, - protectedKeyTag: data.user.protectedKeyTag || null + protectedKeyTag: data.user.protectedKeyTag || null, + refreshToken: data.token.refresh } as const; } }); diff --git a/cli/packages/api/model.go b/cli/packages/api/model.go index a7a797a0b..59abe0253 100644 --- a/cli/packages/api/model.go +++ b/cli/packages/api/model.go @@ -21,7 +21,7 @@ type LoginTwoRequest struct { } type LoginTwoResponse struct { - JTWToken string `json:"token"` + JWTToken string `json:"token"` RefreshToken string `json:"refreshToken"` PublicKey string `json:"publicKey"` EncryptedPrivateKey string `json:"encryptedPrivateKey"` @@ -267,7 +267,7 @@ type GetLoginTwoV2Response struct { ProtectedKey string `json:"protectedKey"` ProtectedKeyIV string `json:"protectedKeyIV"` ProtectedKeyTag string `json:"protectedKeyTag"` - RefreshToken string `json:"RefreshToken"` + RefreshToken string `json:"refreshToken"` } type VerifyMfaTokenRequest struct { diff --git a/cli/packages/cmd/dynamic_secrets.go b/cli/packages/cmd/dynamic_secrets.go index 0443e7714..f8a43bc06 100644 --- a/cli/packages/cmd/dynamic_secrets.go +++ b/cli/packages/cmd/dynamic_secrets.go @@ -87,7 +87,7 @@ func getDynamicSecretList(cmd *cobra.Command, args []string) { loggedInUserDetails = util.EstablishUserLoginSession() } - infisicalToken = loggedInUserDetails.UserCredentials.JTWToken + infisicalToken = loggedInUserDetails.UserCredentials.JWTToken } httpClient.SetAuthToken(infisicalToken) @@ -211,7 +211,7 @@ func createDynamicSecretLeaseByName(cmd *cobra.Command, args []string) { if loggedInUserDetails.LoginExpired { loggedInUserDetails = util.EstablishUserLoginSession() } - infisicalToken = loggedInUserDetails.UserCredentials.JTWToken + infisicalToken = loggedInUserDetails.UserCredentials.JWTToken } httpClient.SetAuthToken(infisicalToken) @@ -363,7 +363,7 @@ func renewDynamicSecretLeaseByName(cmd *cobra.Command, args []string) { loggedInUserDetails = util.EstablishUserLoginSession() } - infisicalToken = loggedInUserDetails.UserCredentials.JTWToken + infisicalToken = loggedInUserDetails.UserCredentials.JWTToken } httpClient.SetAuthToken(infisicalToken) @@ -478,7 +478,7 @@ func revokeDynamicSecretLeaseByName(cmd *cobra.Command, args []string) { loggedInUserDetails = util.EstablishUserLoginSession() } - infisicalToken = loggedInUserDetails.UserCredentials.JTWToken + infisicalToken = loggedInUserDetails.UserCredentials.JWTToken } httpClient.SetAuthToken(infisicalToken) @@ -592,7 +592,7 @@ func listDynamicSecretLeaseByName(cmd *cobra.Command, args []string) { if loggedInUserDetails.LoginExpired { loggedInUserDetails = util.EstablishUserLoginSession() } - infisicalToken = loggedInUserDetails.UserCredentials.JTWToken + infisicalToken = loggedInUserDetails.UserCredentials.JWTToken } httpClient.SetAuthToken(infisicalToken) diff --git a/cli/packages/cmd/export.go b/cli/packages/cmd/export.go index b872b0e61..9066b7145 100644 --- a/cli/packages/cmd/export.go +++ b/cli/packages/cmd/export.go @@ -115,7 +115,7 @@ var exportCmd = &cobra.Command{ if err != nil { util.HandleError(err) } - accessToken = loggedInUserDetails.UserCredentials.JTWToken + accessToken = loggedInUserDetails.UserCredentials.JWTToken } processedTemplate, err := ProcessTemplate(1, templatePath, nil, accessToken, "", &newEtag, dynamicSecretLeases) diff --git a/cli/packages/cmd/init.go b/cli/packages/cmd/init.go index 2ef555a82..c85cac9f9 100644 --- a/cli/packages/cmd/init.go +++ b/cli/packages/cmd/init.go @@ -53,7 +53,7 @@ var initCmd = &cobra.Command{ if err != nil { util.HandleError(err, "Unable to get resty client with custom headers") } - httpClient.SetAuthToken(userCreds.UserCredentials.JTWToken) + httpClient.SetAuthToken(userCreds.UserCredentials.JWTToken) organizationResponse, err := api.CallGetAllOrganizations(httpClient) if err != nil { @@ -124,7 +124,7 @@ var initCmd = &cobra.Command{ } // set the config jwt token to the new token - userCreds.UserCredentials.JTWToken = tokenResponse.Token + userCreds.UserCredentials.JWTToken = tokenResponse.Token err = util.StoreUserCredsInKeyRing(&userCreds.UserCredentials) httpClient.SetAuthToken(tokenResponse.Token) diff --git a/cli/packages/cmd/login.go b/cli/packages/cmd/login.go index fd3ce1569..c7168066b 100644 --- a/cli/packages/cmd/login.go +++ b/cli/packages/cmd/login.go @@ -111,7 +111,7 @@ var loginCmd = &cobra.Command{ infisicalClient := infisicalSdk.NewInfisicalClient(context.Background(), infisicalSdk.Config{ SiteUrl: config.INFISICAL_URL, UserAgent: api.USER_AGENT, - AutoTokenRefresh: false, + AutoTokenRefresh: true, CustomHeaders: customHeaders, }) @@ -437,7 +437,8 @@ func cliDefaultLogin(userCredentialsToBeStored *models.UserCredentials) { //updating usercredentials userCredentialsToBeStored.Email = email userCredentialsToBeStored.PrivateKey = string(decryptedPrivateKey) - userCredentialsToBeStored.JTWToken = newJwtToken + userCredentialsToBeStored.JWTToken = newJwtToken + userCredentialsToBeStored.RefreshToken = loginTwoResponse.RefreshToken } func init() { @@ -862,7 +863,7 @@ func askToPasteJwtToken(success chan models.UserCredentials, failure chan error) os.Exit(1) } - // verify JTW + // verify JWT httpClient, err := util.GetRestyClientWithCustomHeaders() if err != nil { failure <- err @@ -871,7 +872,7 @@ func askToPasteJwtToken(success chan models.UserCredentials, failure chan error) } httpClient. - SetAuthToken(userCredentials.JTWToken). + SetAuthToken(userCredentials.JWTToken). SetHeader("Accept", "application/json") isAuthenticated := api.CallIsAuthenticated(httpClient) diff --git a/cli/packages/cmd/secrets.go b/cli/packages/cmd/secrets.go index 930a27a56..05d1c2d5f 100644 --- a/cli/packages/cmd/secrets.go +++ b/cli/packages/cmd/secrets.go @@ -245,7 +245,7 @@ var secretsSetCmd = &cobra.Command{ secretOperations, err = util.SetRawSecrets(processedArgs, secretType, environmentName, secretsPath, projectId, &models.TokenDetails{ Type: "", - Token: loggedInUserDetails.UserCredentials.JTWToken, + Token: loggedInUserDetails.UserCredentials.JWTToken, }, file) } @@ -330,7 +330,7 @@ var secretsDeleteCmd = &cobra.Command{ loggedInUserDetails = util.EstablishUserLoginSession() } - httpClient.SetAuthToken(loggedInUserDetails.UserCredentials.JTWToken) + httpClient.SetAuthToken(loggedInUserDetails.UserCredentials.JWTToken) } for _, secretName := range args { diff --git a/cli/packages/cmd/ssh.go b/cli/packages/cmd/ssh.go index 4315989bd..e0939995e 100644 --- a/cli/packages/cmd/ssh.go +++ b/cli/packages/cmd/ssh.go @@ -186,7 +186,7 @@ func issueCredentials(cmd *cobra.Command, args []string) { if loggedInUserDetails.LoginExpired { loggedInUserDetails = util.EstablishUserLoginSession() } - infisicalToken = loggedInUserDetails.UserCredentials.JTWToken + infisicalToken = loggedInUserDetails.UserCredentials.JWTToken } certificateTemplateId, err := cmd.Flags().GetString("certificateTemplateId") @@ -419,7 +419,7 @@ func signKey(cmd *cobra.Command, args []string) { if loggedInUserDetails.LoginExpired { loggedInUserDetails = util.EstablishUserLoginSession() } - infisicalToken = loggedInUserDetails.UserCredentials.JTWToken + infisicalToken = loggedInUserDetails.UserCredentials.JWTToken } certificateTemplateId, err := cmd.Flags().GetString("certificateTemplateId") @@ -628,7 +628,7 @@ func sshConnect(cmd *cobra.Command, args []string) { if loggedInUserDetails.LoginExpired { loggedInUserDetails = util.EstablishUserLoginSession() } - infisicalToken = loggedInUserDetails.UserCredentials.JTWToken + infisicalToken = loggedInUserDetails.UserCredentials.JWTToken } writeHostCaToFile, err := cmd.Flags().GetBool("write-host-ca-to-file") @@ -881,7 +881,7 @@ func sshAddHost(cmd *cobra.Command, args []string) { if loggedInUserDetails.LoginExpired { loggedInUserDetails = util.EstablishUserLoginSession() } - infisicalToken = loggedInUserDetails.UserCredentials.JTWToken + infisicalToken = loggedInUserDetails.UserCredentials.JWTToken } projectId, err := cmd.Flags().GetString("projectId") diff --git a/cli/packages/cmd/tokens.go b/cli/packages/cmd/tokens.go index a2e445239..f867169f8 100644 --- a/cli/packages/cmd/tokens.go +++ b/cli/packages/cmd/tokens.go @@ -115,7 +115,7 @@ var tokensCreateCmd = &cobra.Command{ } } - workspaceKey, err := util.GetPlainTextWorkspaceKey(loggedInUserDetails.UserCredentials.JTWToken, loggedInUserDetails.UserCredentials.PrivateKey, workspaceId) + workspaceKey, err := util.GetPlainTextWorkspaceKey(loggedInUserDetails.UserCredentials.JWTToken, loggedInUserDetails.UserCredentials.PrivateKey, workspaceId) if err != nil { util.HandleError(err, "Unable to get workspace key needed to create service token") } @@ -140,7 +140,7 @@ var tokensCreateCmd = &cobra.Command{ util.HandleError(err, "Unable to get resty client with custom headers") } - httpClient.SetAuthToken(loggedInUserDetails.UserCredentials.JTWToken). + httpClient.SetAuthToken(loggedInUserDetails.UserCredentials.JWTToken). SetHeader("Accept", "application/json") createServiceTokenResponse, err := api.CallCreateServiceToken(httpClient, api.CreateServiceTokenRequest{ diff --git a/cli/packages/cmd/user.go b/cli/packages/cmd/user.go index 6c7d54d46..bde0b3075 100644 --- a/cli/packages/cmd/user.go +++ b/cli/packages/cmd/user.go @@ -118,7 +118,7 @@ var userGetTokenCmd = &cobra.Command{ util.HandleError(err, "[infisical user get token]: Unable to get logged in user token") } - tokenParts := strings.Split(loggedInUserDetails.UserCredentials.JTWToken, ".") + tokenParts := strings.Split(loggedInUserDetails.UserCredentials.JWTToken, ".") if len(tokenParts) != 3 { util.HandleError(errors.New("invalid token format"), "[infisical user get token]: Invalid token format") } @@ -136,7 +136,7 @@ var userGetTokenCmd = &cobra.Command{ } fmt.Println("Session ID:", tokenPayload.TokenVersionId) - fmt.Println("Token:", loggedInUserDetails.UserCredentials.JTWToken) + fmt.Println("Token:", loggedInUserDetails.UserCredentials.JWTToken) }, } diff --git a/cli/packages/models/cli.go b/cli/packages/models/cli.go index 8b9fef6f6..9a3ff85b2 100644 --- a/cli/packages/models/cli.go +++ b/cli/packages/models/cli.go @@ -5,8 +5,8 @@ import "time" type UserCredentials struct { Email string `json:"email"` PrivateKey string `json:"privateKey"` - JTWToken string `json:"JTWToken"` - RefreshToken string `json:"RefreshToken"` + JWTToken string `json:"JWTToken"` + RefreshToken string `json:"refreshToken"` } // The file struct for Infisical config file diff --git a/cli/packages/util/credentials.go b/cli/packages/util/credentials.go index cd73e47ca..58de59dee 100644 --- a/cli/packages/util/credentials.go +++ b/cli/packages/util/credentials.go @@ -9,6 +9,7 @@ import ( "github.com/Infisical/infisical-merge/packages/api" "github.com/Infisical/infisical-merge/packages/config" "github.com/Infisical/infisical-merge/packages/models" + "github.com/rs/zerolog/log" "github.com/zalando/go-keyring" ) @@ -90,23 +91,22 @@ func GetCurrentLoggedInUserDetails(setConfigVariables bool) (LoggedInUserDetails } httpClient. - SetAuthToken(userCreds.JTWToken). + SetAuthToken(userCreds.JWTToken). SetHeader("Accept", "application/json") isAuthenticated := api.CallIsAuthenticated(httpClient) - // TODO: add refresh token - // if !isAuthenticated { - // accessTokenResponse, err := api.CallGetNewAccessTokenWithRefreshToken(httpClient, userCreds.RefreshToken) - // if err == nil && accessTokenResponse.Token != "" { - // isAuthenticated = true - // userCreds.JTWToken = accessTokenResponse.Token - // } - // } + if !isAuthenticated { + accessTokenResponse, refreshErr := api.CallGetNewAccessTokenWithRefreshToken(httpClient, userCreds.RefreshToken) + if refreshErr == nil && accessTokenResponse.Token != "" { + isAuthenticated = true + userCreds.JWTToken = accessTokenResponse.Token + } + } - // err = StoreUserCredsInKeyRing(&userCreds) - // if err != nil { - // log.Debug().Msg("unable to store your user credentials with new access token") - // } + err = StoreUserCredsInKeyRing(&userCreds) + if err != nil { + log.Debug().Msg("unable to store your user credentials with new access token") + } if !isAuthenticated { return LoggedInUserDetails{ diff --git a/cli/packages/util/folders.go b/cli/packages/util/folders.go index fb4f2a322..412fadb54 100644 --- a/cli/packages/util/folders.go +++ b/cli/packages/util/folders.go @@ -35,7 +35,7 @@ func GetAllFolders(params models.GetAllFoldersParameters) ([]models.SingleFolder params.WorkspaceId = workspaceFile.WorkspaceId } - folders, err := GetFoldersViaJTW(loggedInUserDetails.UserCredentials.JTWToken, params.WorkspaceId, params.Environment, params.FoldersPath) + folders, err := GetFoldersViaJWT(loggedInUserDetails.UserCredentials.JWTToken, params.WorkspaceId, params.Environment, params.FoldersPath) folderErr = err foldersToReturn = folders } else if params.InfisicalToken != "" { @@ -60,14 +60,14 @@ func GetAllFolders(params models.GetAllFoldersParameters) ([]models.SingleFolder return foldersToReturn, folderErr } -func GetFoldersViaJTW(JTWToken string, workspaceId string, environmentName string, foldersPath string) ([]models.SingleFolder, error) { +func GetFoldersViaJWT(JWTToken string, workspaceId string, environmentName string, foldersPath string) ([]models.SingleFolder, error) { // set up resty client httpClient, err := GetRestyClientWithCustomHeaders() if err != nil { return nil, err } - httpClient.SetAuthToken(JTWToken). + httpClient.SetAuthToken(JWTToken). SetHeader("Accept", "application/json") getFoldersRequest := api.GetFoldersV1Request{ @@ -194,7 +194,7 @@ func CreateFolder(params models.CreateFolderParameters) (models.SingleFolder, er loggedInUserDetails = EstablishUserLoginSession() } - params.InfisicalToken = loggedInUserDetails.UserCredentials.JTWToken + params.InfisicalToken = loggedInUserDetails.UserCredentials.JWTToken } // set up resty client @@ -243,7 +243,7 @@ func DeleteFolder(params models.DeleteFolderParameters) ([]models.SingleFolder, loggedInUserDetails = EstablishUserLoginSession() } - params.InfisicalToken = loggedInUserDetails.UserCredentials.JTWToken + params.InfisicalToken = loggedInUserDetails.UserCredentials.JWTToken } // set up resty client diff --git a/cli/packages/util/secrets.go b/cli/packages/util/secrets.go index 814e7da23..4666291e7 100644 --- a/cli/packages/util/secrets.go +++ b/cli/packages/util/secrets.go @@ -302,9 +302,9 @@ func GetAllEnvironmentVariables(params models.GetAllSecretsParameters, projectCo params.WorkspaceId = infisicalDotJson.WorkspaceId } - res, err := GetPlainTextSecretsV3(loggedInUserDetails.UserCredentials.JTWToken, params.WorkspaceId, + res, err := GetPlainTextSecretsV3(loggedInUserDetails.UserCredentials.JWTToken, params.WorkspaceId, params.Environment, params.SecretsPath, params.IncludeImport, params.Recursive, params.TagSlugs, true) - log.Debug().Msgf("GetAllEnvironmentVariables: Trying to fetch secrets JTW token [err=%s]", err) + log.Debug().Msgf("GetAllEnvironmentVariables: Trying to fetch secrets JWT token [err=%s]", err) if err == nil { backupEncryptionKey, err := GetBackupEncryptionKey() diff --git a/frontend/src/components/utilities/attemptCliLogin.ts b/frontend/src/components/utilities/attemptCliLogin.ts index d897ebeaa..914a4c266 100644 --- a/frontend/src/components/utilities/attemptCliLogin.ts +++ b/frontend/src/components/utilities/attemptCliLogin.ts @@ -16,7 +16,7 @@ export interface IsCliLoginSuccessful { loginResponse?: { email: string; privateKey: string; - JTWToken: string; + JWTToken: string; }; success: boolean; } @@ -131,7 +131,7 @@ const attemptLogin = async ({ loginResponse: { email, privateKey, - JTWToken: token + JWTToken: token }, success: true }); diff --git a/frontend/src/components/utilities/attemptCliLoginMfa.ts b/frontend/src/components/utilities/attemptCliLoginMfa.ts index 14a61d817..2a5de18dd 100644 --- a/frontend/src/components/utilities/attemptCliLoginMfa.ts +++ b/frontend/src/components/utilities/attemptCliLoginMfa.ts @@ -14,7 +14,7 @@ interface IsMfaLoginSuccessful { success: boolean; loginResponse: { privateKey: string; - JTWToken: string; + JWTToken: string; }; } @@ -95,7 +95,7 @@ const attemptLoginMfa = async ({ success: true, loginResponse: { privateKey, - JTWToken: token + JWTToken: token } }); } catch (err) { diff --git a/frontend/src/hooks/api/auth/queries.tsx b/frontend/src/hooks/api/auth/queries.tsx index 796fd3152..9acd2308f 100644 --- a/frontend/src/hooks/api/auth/queries.tsx +++ b/frontend/src/hooks/api/auth/queries.tsx @@ -73,6 +73,7 @@ export const selectOrganization = async (data: { }) => { const { data: res } = await apiRequest.post<{ token: string; + refreshToken: string; isMfaEnabled: boolean; mfaMethod?: MfaMethod; }>("/api/v3/auth/select-organization", data); diff --git a/frontend/src/pages/auth/LoginPage/components/PasswordStep/PasswordStep.tsx b/frontend/src/pages/auth/LoginPage/components/PasswordStep/PasswordStep.tsx index 91432f9be..e175ef7f2 100644 --- a/frontend/src/pages/auth/LoginPage/components/PasswordStep/PasswordStep.tsx +++ b/frontend/src/pages/auth/LoginPage/components/PasswordStep/PasswordStep.tsx @@ -76,7 +76,9 @@ export const PasswordStep = ({ // case: organization ID is present from the provider auth token -- select the org and use the new jwt token in the CLI, then navigate to the org if (organizationId) { const finishWithOrgWorkflow = async () => { - const { token, isMfaEnabled, mfaMethod } = await selectOrganization({ organizationId }); + const { token, isMfaEnabled, mfaMethod, refreshToken } = await selectOrganization({ + organizationId + }); if (isMfaEnabled) { SecurityClient.setMfaToken(token); @@ -94,10 +96,11 @@ export const PasswordStep = ({ const payload = { privateKey, email, - JTWToken: token + JWTToken: token, + refreshToken }; await instance.post(cliUrl, payload).catch(() => { - // if error happens to communicate we set the token with an expiry in sessino storage + // if error happens to communicate we set the token with an expiry in session storage // the cli-redirect page has logic to show this to user and ask them to paste it in terminal sessionStorage.setItem( SessionStorageKeys.CLI_TERMINAL_TOKEN, @@ -187,7 +190,7 @@ export const PasswordStep = ({ // case: organization ID is present from the provider auth token -- select the org and use the new jwt token in the CLI, then navigate to the org if (organizationId) { const finishWithOrgWorkflow = async () => { - const { token, isMfaEnabled, mfaMethod } = await selectOrganization({ + const { token, isMfaEnabled, mfaMethod, refreshToken } = await selectOrganization({ organizationId }); @@ -206,10 +209,11 @@ export const PasswordStep = ({ const instance = axios.create(); const payload = { ...isCliLoginSuccessful.loginResponse, - JTWToken: token + JWTToken: token, + refreshToken }; await instance.post(cliUrl, payload).catch(() => { - // if error happens to communicate we set the token with an expiry in sessino storage + // if error happens to communicate we set the token with an expiry in session storage // the cli-redirect page has logic to show this to user and ask them to paste it in terminal sessionStorage.setItem( SessionStorageKeys.CLI_TERMINAL_TOKEN, diff --git a/frontend/src/pages/auth/SelectOrgPage/SelectOrgSection.tsx b/frontend/src/pages/auth/SelectOrgPage/SelectOrgSection.tsx index ac194cd05..ead8b1401 100644 --- a/frontend/src/pages/auth/SelectOrgPage/SelectOrgSection.tsx +++ b/frontend/src/pages/auth/SelectOrgPage/SelectOrgSection.tsx @@ -112,7 +112,7 @@ export const SelectOrganizationSection = () => { return; } - const { token, isMfaEnabled, mfaMethod } = await selectOrg + const { token, isMfaEnabled, mfaMethod, refreshToken } = await selectOrg .mutateAsync({ organizationId: organization.id, userAgent: callbackPort ? UserAgentType.CLI : undefined @@ -149,15 +149,16 @@ export const SelectOrganizationSection = () => { } const payload = { - JTWToken: token, + JWTToken: token, email: user?.email, - privateKey + privateKey, + refreshToken } as IsCliLoginSuccessful["loginResponse"]; // send request to server endpoint const instance = axios.create(); await instance.post(`http://127.0.0.1:${callbackPort}/`, payload).catch(() => { - // if error happens to communicate we set the token with an expiry in sessino storage + // if error happens to communicate we set the token with an expiry in session storage // the cli-redirect page has logic to show this to user and ask them to paste it in terminal sessionStorage.setItem( SessionStorageKeys.CLI_TERMINAL_TOKEN,