mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-07 12:27:28 +00:00
Merge branch 'main' of https://github.com/Infisical/infisical
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
name: Push to Docker Hub
|
name: Push frontend and backend to Dockerhub
|
||||||
|
|
||||||
on: [workflow_dispatch]
|
on: [workflow_dispatch]
|
||||||
|
|
||||||
@@ -13,8 +13,6 @@ jobs:
|
|||||||
- name: Save commit hashes for tag
|
- name: Save commit hashes for tag
|
||||||
id: commit
|
id: commit
|
||||||
uses: pr-mpt/actions-commit-hash@v2
|
uses: pr-mpt/actions-commit-hash@v2
|
||||||
- name: 🔧 Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v2
|
|
||||||
- name: 🔧 Set up Docker Buildx
|
- name: 🔧 Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v2
|
uses: docker/setup-buildx-action@v2
|
||||||
- name: 🐋 Login to Docker Hub
|
- name: 🐋 Login to Docker Hub
|
||||||
@@ -22,9 +20,13 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
- name: Set up Depot CLI
|
||||||
|
uses: depot/setup-action@v1
|
||||||
- name: 📦 Build backend and export to Docker
|
- name: 📦 Build backend and export to Docker
|
||||||
uses: docker/build-push-action@v3
|
uses: depot/build-push-action@v1
|
||||||
with:
|
with:
|
||||||
|
project: 64mmf0n610
|
||||||
|
token: ${{ secrets.DEPOT_PROJECT_TOKEN }}
|
||||||
load: true
|
load: true
|
||||||
context: backend
|
context: backend
|
||||||
tags: infisical/backend:test
|
tags: infisical/backend:test
|
||||||
@@ -38,8 +40,10 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
docker compose -f .github/resources/docker-compose.be-test.yml down
|
docker compose -f .github/resources/docker-compose.be-test.yml down
|
||||||
- name: 🏗️ Build backend and push
|
- name: 🏗️ Build backend and push
|
||||||
uses: docker/build-push-action@v3
|
uses: depot/build-push-action@v1
|
||||||
with:
|
with:
|
||||||
|
project: 64mmf0n610
|
||||||
|
token: ${{ secrets.DEPOT_PROJECT_TOKEN }}
|
||||||
push: true
|
push: true
|
||||||
context: backend
|
context: backend
|
||||||
tags: infisical/backend:${{ steps.commit.outputs.short }},
|
tags: infisical/backend:${{ steps.commit.outputs.short }},
|
||||||
@@ -56,8 +60,6 @@ jobs:
|
|||||||
- name: Save commit hashes for tag
|
- name: Save commit hashes for tag
|
||||||
id: commit
|
id: commit
|
||||||
uses: pr-mpt/actions-commit-hash@v2
|
uses: pr-mpt/actions-commit-hash@v2
|
||||||
- name: 🔧 Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v2
|
|
||||||
- name: 🔧 Set up Docker Buildx
|
- name: 🔧 Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v2
|
uses: docker/setup-buildx-action@v2
|
||||||
- name: 🐋 Login to Docker Hub
|
- name: 🐋 Login to Docker Hub
|
||||||
@@ -65,10 +67,14 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
- name: Set up Depot CLI
|
||||||
|
uses: depot/setup-action@v1
|
||||||
- name: 📦 Build frontend and export to Docker
|
- name: 📦 Build frontend and export to Docker
|
||||||
uses: docker/build-push-action@v3
|
uses: depot/build-push-action@v1
|
||||||
with:
|
with:
|
||||||
load: true
|
load: true
|
||||||
|
token: ${{ secrets.DEPOT_PROJECT_TOKEN }}
|
||||||
|
project: 64mmf0n610
|
||||||
context: frontend
|
context: frontend
|
||||||
tags: infisical/frontend:test
|
tags: infisical/frontend:test
|
||||||
build-args: |
|
build-args: |
|
||||||
@@ -83,12 +89,14 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
docker stop infisical-frontend-test
|
docker stop infisical-frontend-test
|
||||||
- name: 🏗️ Build frontend and push
|
- name: 🏗️ Build frontend and push
|
||||||
uses: docker/build-push-action@v3
|
uses: depot/build-push-action@v1
|
||||||
with:
|
with:
|
||||||
|
project: 64mmf0n610
|
||||||
push: true
|
push: true
|
||||||
|
token: ${{ secrets.DEPOT_PROJECT_TOKEN }}
|
||||||
context: frontend
|
context: frontend
|
||||||
tags: infisical/frontend:${{ steps.commit.outputs.short }},
|
tags: infisical/frontend:${{ steps.commit.outputs.short }},
|
||||||
infisical/frontend:latest
|
infisical/frontend:latest
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
build-args: |
|
build-args: |
|
||||||
POSTHOG_API_KEY=${{ secrets.PUBLIC_POSTHOG_API_KEY }}
|
POSTHOG_API_KEY=${{ secrets.PUBLIC_POSTHOG_API_KEY }}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
name: Go releaser
|
name: Build and release CLI
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
|||||||
@@ -337,6 +337,6 @@ Infisical officially launched as v.1.0 on November 21st, 2022. There are a lot o
|
|||||||
|
|
||||||
## 🌎 Translations
|
## 🌎 Translations
|
||||||
|
|
||||||
Infisical is currently aviable in English and Korean. Help us translate Infisical to your language!
|
Infisical is currently available in English and Korean. Help us translate Infisical to your language!
|
||||||
|
|
||||||
You can find all the info in [this issue](https://github.com/Infisical/infisical/issues/181).
|
You can find all the info in [this issue](https://github.com/Infisical/infisical/issues/181).
|
||||||
@@ -7,7 +7,7 @@ const { ValidationError } = mongoose.Error;
|
|||||||
import { BadRequestError, InternalServerError, UnauthorizedRequestError, ValidationError as RouteValidationError } from '../../utils/errors';
|
import { BadRequestError, InternalServerError, UnauthorizedRequestError, ValidationError as RouteValidationError } from '../../utils/errors';
|
||||||
import { AnyBulkWriteOperation } from 'mongodb';
|
import { AnyBulkWriteOperation } from 'mongodb';
|
||||||
import { SECRET_PERSONAL, SECRET_SHARED } from "../../variables";
|
import { SECRET_PERSONAL, SECRET_SHARED } from "../../variables";
|
||||||
import { postHogClient } from '../../services';
|
// import { postHogClient } from '../../services';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create secret for workspace with id [workspaceId] and environment [environment]
|
* Create secret for workspace with id [workspaceId] and environment [environment]
|
||||||
@@ -42,19 +42,19 @@ export const createSecret = async (req: Request, res: Response) => {
|
|||||||
throw RouteValidationError({ message: error.message, stack: error.stack })
|
throw RouteValidationError({ message: error.message, stack: error.stack })
|
||||||
}
|
}
|
||||||
|
|
||||||
if (postHogClient) {
|
// if (postHogClient) {
|
||||||
postHogClient.capture({
|
// postHogClient.capture({
|
||||||
event: 'secrets added',
|
// event: 'secrets added',
|
||||||
distinctId: req.user.email,
|
// distinctId: req.user.email,
|
||||||
properties: {
|
// properties: {
|
||||||
numberOfSecrets: 1,
|
// numberOfSecrets: 1,
|
||||||
workspaceId,
|
// workspaceId,
|
||||||
environment,
|
// environment,
|
||||||
channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli',
|
// channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli',
|
||||||
userAgent: req.headers?.['user-agent']
|
// userAgent: req.headers?.['user-agent']
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
res.status(200).send({
|
res.status(200).send({
|
||||||
secret
|
secret
|
||||||
@@ -103,19 +103,19 @@ export const createSecrets = async (req: Request, res: Response) => {
|
|||||||
throw InternalServerError({ message: "Unable to process your batch create request. Please try again", stack: bulkCreateError.stack })
|
throw InternalServerError({ message: "Unable to process your batch create request. Please try again", stack: bulkCreateError.stack })
|
||||||
}
|
}
|
||||||
|
|
||||||
if (postHogClient) {
|
// if (postHogClient) {
|
||||||
postHogClient.capture({
|
// postHogClient.capture({
|
||||||
event: 'secrets added',
|
// event: 'secrets added',
|
||||||
distinctId: req.user.email,
|
// distinctId: req.user.email,
|
||||||
properties: {
|
// properties: {
|
||||||
numberOfSecrets: (secretsToCreate ?? []).length,
|
// numberOfSecrets: (secretsToCreate ?? []).length,
|
||||||
workspaceId,
|
// workspaceId,
|
||||||
environment,
|
// environment,
|
||||||
channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli',
|
// channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli',
|
||||||
userAgent: req.headers?.['user-agent']
|
// userAgent: req.headers?.['user-agent']
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
res.status(200).send({
|
res.status(200).send({
|
||||||
secrets
|
secrets
|
||||||
@@ -158,19 +158,19 @@ export const deleteSecrets = async (req: Request, res: Response) => {
|
|||||||
throw InternalServerError()
|
throw InternalServerError()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (postHogClient) {
|
// if (postHogClient) {
|
||||||
postHogClient.capture({
|
// postHogClient.capture({
|
||||||
event: 'secrets deleted',
|
// event: 'secrets deleted',
|
||||||
distinctId: req.user.email,
|
// distinctId: req.user.email,
|
||||||
properties: {
|
// properties: {
|
||||||
numberOfSecrets: numSecretsDeleted,
|
// numberOfSecrets: numSecretsDeleted,
|
||||||
environment: environmentName,
|
// environment: environmentName,
|
||||||
workspaceId,
|
// workspaceId,
|
||||||
channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli',
|
// channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli',
|
||||||
userAgent: req.headers?.['user-agent']
|
// userAgent: req.headers?.['user-agent']
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
res.status(200).send()
|
res.status(200).send()
|
||||||
}
|
}
|
||||||
@@ -183,19 +183,19 @@ export const deleteSecrets = async (req: Request, res: Response) => {
|
|||||||
export const deleteSecret = async (req: Request, res: Response) => {
|
export const deleteSecret = async (req: Request, res: Response) => {
|
||||||
await Secret.findByIdAndDelete(req._secret._id)
|
await Secret.findByIdAndDelete(req._secret._id)
|
||||||
|
|
||||||
if (postHogClient) {
|
// if (postHogClient) {
|
||||||
postHogClient.capture({
|
// postHogClient.capture({
|
||||||
event: 'secrets deleted',
|
// event: 'secrets deleted',
|
||||||
distinctId: req.user.email,
|
// distinctId: req.user.email,
|
||||||
properties: {
|
// properties: {
|
||||||
numberOfSecrets: 1,
|
// numberOfSecrets: 1,
|
||||||
workspaceId: req._secret.workspace.toString(),
|
// workspaceId: req._secret.workspace.toString(),
|
||||||
environment: req._secret.environment,
|
// environment: req._secret.environment,
|
||||||
channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli',
|
// channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli',
|
||||||
userAgent: req.headers?.['user-agent']
|
// userAgent: req.headers?.['user-agent']
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
res.status(200).send({
|
res.status(200).send({
|
||||||
secret: req._secret
|
secret: req._secret
|
||||||
@@ -252,19 +252,19 @@ export const updateSecrets = async (req: Request, res: Response) => {
|
|||||||
throw InternalServerError()
|
throw InternalServerError()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (postHogClient) {
|
// if (postHogClient) {
|
||||||
postHogClient.capture({
|
// postHogClient.capture({
|
||||||
event: 'secrets modified',
|
// event: 'secrets modified',
|
||||||
distinctId: req.user.email,
|
// distinctId: req.user.email,
|
||||||
properties: {
|
// properties: {
|
||||||
numberOfSecrets: (secretsModificationsRequested ?? []).length,
|
// numberOfSecrets: (secretsModificationsRequested ?? []).length,
|
||||||
environment: environmentName,
|
// environment: environmentName,
|
||||||
workspaceId,
|
// workspaceId,
|
||||||
channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli',
|
// channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli',
|
||||||
userAgent: req.headers?.['user-agent']
|
// userAgent: req.headers?.['user-agent']
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
return res.status(200).send()
|
return res.status(200).send()
|
||||||
}
|
}
|
||||||
@@ -304,19 +304,19 @@ export const updateSecret = async (req: Request, res: Response) => {
|
|||||||
throw RouteValidationError({ message: "Unable to apply modifications, please try again", stack: error.stack })
|
throw RouteValidationError({ message: "Unable to apply modifications, please try again", stack: error.stack })
|
||||||
}
|
}
|
||||||
|
|
||||||
if (postHogClient) {
|
// if (postHogClient) {
|
||||||
postHogClient.capture({
|
// postHogClient.capture({
|
||||||
event: 'secrets modified',
|
// event: 'secrets modified',
|
||||||
distinctId: req.user.email,
|
// distinctId: req.user.email,
|
||||||
properties: {
|
// properties: {
|
||||||
numberOfSecrets: 1,
|
// numberOfSecrets: 1,
|
||||||
environment: environmentName,
|
// environment: environmentName,
|
||||||
workspaceId,
|
// workspaceId,
|
||||||
channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli',
|
// channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli',
|
||||||
userAgent: req.headers?.['user-agent']
|
// userAgent: req.headers?.['user-agent']
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
return res.status(200).send(singleModificationUpdate)
|
return res.status(200).send(singleModificationUpdate)
|
||||||
}
|
}
|
||||||
@@ -354,19 +354,19 @@ export const getSecrets = async (req: Request, res: Response) => {
|
|||||||
throw RouteValidationError({ message: "Failed to get secrets, please try again", stack: err.stack })
|
throw RouteValidationError({ message: "Failed to get secrets, please try again", stack: err.stack })
|
||||||
}
|
}
|
||||||
|
|
||||||
if (postHogClient) {
|
// if (postHogClient) {
|
||||||
postHogClient.capture({
|
// postHogClient.capture({
|
||||||
event: 'secrets pulled',
|
// event: 'secrets pulled',
|
||||||
distinctId: req.user.email,
|
// distinctId: req.user.email,
|
||||||
properties: {
|
// properties: {
|
||||||
numberOfSecrets: (secrets ?? []).length,
|
// numberOfSecrets: (secrets ?? []).length,
|
||||||
environment,
|
// environment,
|
||||||
workspaceId,
|
// workspaceId,
|
||||||
channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli',
|
// channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli',
|
||||||
userAgent: req.headers?.['user-agent']
|
// userAgent: req.headers?.['user-agent']
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
return res.json(secrets)
|
return res.json(secrets)
|
||||||
}
|
}
|
||||||
@@ -378,20 +378,20 @@ export const getSecrets = async (req: Request, res: Response) => {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export const getSecret = async (req: Request, res: Response) => {
|
export const getSecret = async (req: Request, res: Response) => {
|
||||||
if (postHogClient) {
|
// if (postHogClient) {
|
||||||
postHogClient.capture({
|
// postHogClient.capture({
|
||||||
event: 'secrets pulled',
|
// event: 'secrets pulled',
|
||||||
distinctId: req.user.email,
|
// distinctId: req.user.email,
|
||||||
properties: {
|
// properties: {
|
||||||
numberOfSecrets: 1,
|
// numberOfSecrets: 1,
|
||||||
workspaceId: req._secret.workspace.toString(),
|
// workspaceId: req._secret.workspace.toString(),
|
||||||
environment: req._secret.environment,
|
// environment: req._secret.environment,
|
||||||
channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli',
|
// channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli',
|
||||||
userAgent: req.headers?.['user-agent']
|
// userAgent: req.headers?.['user-agent']
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
return res.status(200).send({
|
return res.status(200).send({
|
||||||
secret: req._secret
|
secret: req._secret
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ const INTEGRATION_OPTIONS = [
|
|||||||
name: 'Vercel',
|
name: 'Vercel',
|
||||||
slug: 'vercel',
|
slug: 'vercel',
|
||||||
image: 'Vercel',
|
image: 'Vercel',
|
||||||
isAvailable: true,
|
isAvailable: false,
|
||||||
type: 'vercel',
|
type: 'vercel',
|
||||||
clientId: '',
|
clientId: '',
|
||||||
clientSlug: CLIENT_SLUG_VERCEL,
|
clientSlug: CLIENT_SLUG_VERCEL,
|
||||||
@@ -58,7 +58,7 @@ const INTEGRATION_OPTIONS = [
|
|||||||
name: 'Netlify',
|
name: 'Netlify',
|
||||||
slug: 'netlify',
|
slug: 'netlify',
|
||||||
image: 'Netlify',
|
image: 'Netlify',
|
||||||
isAvailable: true,
|
isAvailable: false,
|
||||||
type: 'oauth2',
|
type: 'oauth2',
|
||||||
clientId: CLIENT_ID_NETLIFY,
|
clientId: CLIENT_ID_NETLIFY,
|
||||||
docsLink: ''
|
docsLink: ''
|
||||||
@@ -67,7 +67,7 @@ const INTEGRATION_OPTIONS = [
|
|||||||
name: 'GitHub',
|
name: 'GitHub',
|
||||||
slug: 'github',
|
slug: 'github',
|
||||||
image: 'GitHub',
|
image: 'GitHub',
|
||||||
isAvailable: true,
|
isAvailable: false,
|
||||||
type: 'oauth2',
|
type: 'oauth2',
|
||||||
clientId: CLIENT_ID_GITHUB,
|
clientId: CLIENT_ID_GITHUB,
|
||||||
docsLink: ''
|
docsLink: ''
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ export const initPostHog = () => {
|
|||||||
if (typeof window !== 'undefined') {
|
if (typeof window !== 'undefined') {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
if (ENV == 'production' && TELEMETRY_CAPTURING_ENABLED) {
|
if (ENV == 'production' && TELEMETRY_CAPTURING_ENABLED) {
|
||||||
console.log("Outside of posthog", "POSTHOG_API_KEY", POSTHOG_API_KEY, "POSTHOG_HOST", POSTHOG_HOST)
|
|
||||||
posthog.init(POSTHOG_API_KEY, {
|
posthog.init(POSTHOG_API_KEY, {
|
||||||
api_host: POSTHOG_HOST
|
api_host: POSTHOG_HOST
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -211,9 +211,16 @@ export default function Layout({ children }: LayoutProps) {
|
|||||||
const intendedWorkspaceId = router.asPath
|
const intendedWorkspaceId = router.asPath
|
||||||
.split("/")
|
.split("/")
|
||||||
[router.asPath.split("/").length - 1].split("?")[0];
|
[router.asPath.split("/").length - 1].split("?")[0];
|
||||||
|
|
||||||
|
if (
|
||||||
|
!["heroku", "vercel", "github", "netlify"].includes(intendedWorkspaceId)
|
||||||
|
) {
|
||||||
|
localStorage.setItem("projectData.id", intendedWorkspaceId);
|
||||||
|
}
|
||||||
|
|
||||||
// If a user is not a member of a workspace they are trying to access, just push them to one of theirs
|
// If a user is not a member of a workspace they are trying to access, just push them to one of theirs
|
||||||
if (
|
if (
|
||||||
intendedWorkspaceId != "heroku" &&
|
!["heroku", "vercel", "github", "netlify"].includes(intendedWorkspaceId) &&
|
||||||
!userWorkspaces
|
!userWorkspaces
|
||||||
.map((workspace: { _id: string }) => workspace._id)
|
.map((workspace: { _id: string }) => workspace._id)
|
||||||
.includes(intendedWorkspaceId)
|
.includes(intendedWorkspaceId)
|
||||||
@@ -259,14 +266,14 @@ export default function Layout({ children }: LayoutProps) {
|
|||||||
.split("/")
|
.split("/")
|
||||||
[router.asPath.split("/").length - 1].split("?")[0]
|
[router.asPath.split("/").length - 1].split("?")[0]
|
||||||
) {
|
) {
|
||||||
router.push(
|
|
||||||
"/dashboard/" +
|
|
||||||
workspaceMapping[workspaceSelected as any]
|
|
||||||
);
|
|
||||||
localStorage.setItem(
|
localStorage.setItem(
|
||||||
"projectData.id",
|
"projectData.id",
|
||||||
`${workspaceMapping[workspaceSelected as any]}`
|
`${workspaceMapping[workspaceSelected as any]}`
|
||||||
);
|
);
|
||||||
|
router.push(
|
||||||
|
"/dashboard/" +
|
||||||
|
workspaceMapping[workspaceSelected as any]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
|
|||||||
@@ -73,8 +73,6 @@ const AddServiceTokenDialog = ({
|
|||||||
tag
|
tag
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log('newServiceToken', newServiceToken);
|
|
||||||
|
|
||||||
setServiceTokens(serviceTokens.concat([newServiceToken.serviceTokenData]));
|
setServiceTokens(serviceTokens.concat([newServiceToken.serviceTokenData]));
|
||||||
setServiceToken(newServiceToken.serviceToken + "." + randomBytes);
|
setServiceToken(newServiceToken.serviceToken + "." + randomBytes);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"no-integrations1": "You don't have any integrations set up yet. When you do, they will appear here.",
|
"no-integrations1": "You don't have any integrations set up yet. When you do, they will appear here.",
|
||||||
"no-integrations2": "To start, click on any of the options below. It takes 5 clicks to set up.",
|
"no-integrations2": "To start, click on any of the options below. It takes 5 clicks to set up.",
|
||||||
"available": "Platform & Cloud Integrations",
|
"available": "Platform & Cloud Integrations",
|
||||||
"available-text1": "Click on the itegration you want to connect. This will let your environment variables flow automatically into selected third-party services.",
|
"available-text1": "Click on the integration you want to connect. This will let your environment variables flow automatically into selected third-party services.",
|
||||||
"available-text2": "Note: during an integration with Heroku, for security reasons, it is impossible to maintain end-to-end encryption. In theory, this lets Infisical decrypt yor environment variables. In practice, we can assure you that this will never be done, and it allows us to protect your secrets from bad actors online. The core Infisical service will always stay end-to-end encrypted. With any questions, reach out [email protected].",
|
"available-text2": "Note: during an integration with Heroku, for security reasons, it is impossible to maintain end-to-end encryption. In theory, this lets Infisical decrypt yor environment variables. In practice, we can assure you that this will never be done, and it allows us to protect your secrets from bad actors online. The core Infisical service will always stay end-to-end encrypted. With any questions, reach out [email protected].",
|
||||||
"cloud-integrations": "Cloud Integrations",
|
"cloud-integrations": "Cloud Integrations",
|
||||||
"framework-integrations": "Framework Integrations",
|
"framework-integrations": "Framework Integrations",
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"title": "Project Members",
|
"title": "Project Members",
|
||||||
"description": "This pages shows the members of the selected project."
|
"description": "This page shows the members of the selected project."
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"title": "Sign Up",
|
"title": "Sign Up",
|
||||||
"og-title": "Replace .env files with 1 line of code. Sign Up for Infisical in 3 minutes.",
|
"og-title": "Replace .env files with 1 line of code. Sign Up for Infisical in 3 minutes.",
|
||||||
"og-description": "Infisical a simple end-to-end encrypted platform that enables teams to sync and manage API-keys and environemntal variables. Works with Node.js, Next.js, Gatsby, Nest.js...",
|
"og-description": "Infisical a simple end-to-end encrypted platform that enables teams to sync and manage API-keys and environemntal variables. Works with Node.js, Next.js, Gatsby, Nest.js...",
|
||||||
"signup": "Sign Up",
|
"signup": "Sign Up",
|
||||||
"already-have-account": "Have an account? Log in",
|
"already-have-account": "Have an account? Log in",
|
||||||
"forgot-password": "Forgot your password?",
|
"forgot-password": "Forgot your password?",
|
||||||
|
|||||||
+1
-1
@@ -325,6 +325,6 @@ Infisical officially launched as v.1.0 on November 21st, 2022. However, a lot of
|
|||||||
|
|
||||||
## 🌎 Translations
|
## 🌎 Translations
|
||||||
|
|
||||||
Infisical is currently aviable in English and Korean. Help us translate Infisical to your language!
|
Infisical is currently available in English and Korean. Help us translate Infisical to your language!
|
||||||
|
|
||||||
You can find all the info in [this issue](https://github.com/Infisical/infisical/issues/181).
|
You can find all the info in [this issue](https://github.com/Infisical/infisical/issues/181).
|
||||||
Reference in New Issue
Block a user