diff --git a/README.md b/README.md index bd0442c938..ba76997f1f 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ To quickly get started, visit our [get started guide](https://infisical.com/docs ## 🔥 What's cool about this? -Infisical makes secret management simple and end-to-end encrypted by default. We're on a mission to make it more accessible to all developers, not just security teams. +Infisical makes secret management simple and end-to-end encrypted by default. We're on a mission to make it more accessible to all developers, not just security teams. According to a [report](https://www.ekransystem.com/en/blog/secrets-management) in 2019, only 10% of organizations use secret management solutions despite all using digital secrets to some extent. @@ -73,6 +73,7 @@ We are currently working hard to make Infisical more extensive. Need any integra Whether it's big or small, we love contributions ❤️ Check out our guide to see how to [get started](https://infisical.com/docs/contributing/overview). Not sure where to get started? You can: + - [Book a free, non-pressure pairing sessions with one of our teammates](mailto:tony@infisical.com?subject=Pairing%20session&body=I'd%20like%20to%20do%20a%20pairing%20session!)! - Join our Slack, and ask us any questions there. @@ -81,7 +82,7 @@ Not sure where to get started? You can: - [Slack](https://join.slack.com/t/infisical-users/shared_invite/zt-1kdbk07ro-RtoyEt_9E~fyzGo_xQYP6g) (For live discussion with the community and the Infisical team) - [GitHub Discussions](https://github.com/Infisical/infisical/discussions) (For help with building and deeper conversations about features) - [GitHub Issues](https://github.com/Infisical/infisical-cli/issues) (For any bugs and errors you encounter using Infisical) -- [Twitter](https://twitter.com/infisical) (Get news fast) +- [Twitter](https://twitter.com/infisical) (Get news fast) ## 🐥 Status @@ -200,7 +201,6 @@ We're currently setting the foundation and building [integrations](https://infis - @@ -294,7 +294,6 @@ We're currently setting the foundation and building [integrations](https://infis
- ## 🏘 Open-source vs. paid This repo is entirely MIT licensed, with the exception of the `ee` directory which will contain premium enterprise features requiring a Infisical license in the future. We're currently focused on developing non-enterprise offerings first that should suit most use-cases. @@ -311,4 +310,4 @@ Looking to report a security vulnerability? Please don't post about it in GitHub - + diff --git a/backend/src/controllers/passwordController.ts b/backend/src/controllers/passwordController.ts index 0109dc6a51..b029bc0bee 100644 --- a/backend/src/controllers/passwordController.ts +++ b/backend/src/controllers/passwordController.ts @@ -309,7 +309,7 @@ export const getBackupPrivateKey = async (req: Request, res: Response) => { try { backupPrivateKey = await BackupPrivateKey.findOne({ user: req.user._id - }); + }).select('+encryptedPrivateKey +iv +tag'); if (!backupPrivateKey) throw new Error('Failed to find backup private key'); } catch (err) { diff --git a/docs/integrations/cloud/vercel.mdx b/docs/integrations/cloud/vercel.mdx new file mode 100644 index 0000000000..eb09203b57 --- /dev/null +++ b/docs/integrations/cloud/vercel.mdx @@ -0,0 +1,5 @@ +--- +title: "Vercel" +--- + +Coming soon. diff --git a/docs/integrations/overview.mdx b/docs/integrations/overview.mdx index 17c7a7f726..9323f8917e 100644 --- a/docs/integrations/overview.mdx +++ b/docs/integrations/overview.mdx @@ -12,7 +12,7 @@ Missing an integration? Throw in a [request](https://github.com/Infisical/infisi | [Docker-Compose](/integrations/platforms/docker-compose) | Platform | Available | | Kubernetes | Platform | Coming soon | | [Heroku](/integrations/cloud/heroku) | Cloud | Available | -| Vercel | Cloud | Coming soon | +| [Vercel](/integrations/cloud/vercel) | Cloud | Coming soon | | AWS | Cloud | Coming soon | | GCP | Cloud | Coming soon | | Azure | Cloud | Coming soon | @@ -31,8 +31,8 @@ Missing an integration? Throw in a [request](https://github.com/Infisical/infisi | [Gatsby](/integrations/frameworks/gatsby) | Framework | Available | | [Remix](/integrations/frameworks/remix) | Framework | Available | | [Vite](/integrations/frameworks/vite) | Framework | Available | -| [Fiber](/integrations/frameworks/fiber) | Framework | Coming soon | +| [Fiber](/integrations/frameworks/fiber) | Framework | Available | | [Django](/integrations/frameworks/django) | Framework | Available | | [Flask](/integrations/frameworks/flask) | Framework | Available | -| [Laravel](/integrations/frameworks/laravel) | Framework | Coming soon | +| [Laravel](/integrations/frameworks/laravel) | Framework | Available | | [Ruby on Rails](/integrations/frameworks/rails) | Framework | Available | diff --git a/docs/mint.json b/docs/mint.json index 4fa0436d8b..547291fa5e 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -130,7 +130,8 @@ { "group": "Cloud", "pages": [ - "integrations/cloud/heroku" + "integrations/cloud/heroku", + "integrations/cloud/vercel" ] }, { diff --git a/frontend/components/dashboard/DashboardInputField.tsx b/frontend/components/dashboard/DashboardInputField.tsx index 43b001bbe8..cb75dcf8c6 100644 --- a/frontend/components/dashboard/DashboardInputField.tsx +++ b/frontend/components/dashboard/DashboardInputField.tsx @@ -7,8 +7,8 @@ import guidGenerator from '../utilities/randomId'; const REGEX = /([$]{.*?})/g; interface DashboardInputFieldProps { - index: number; - onChangeHandler: (value: string, index: number) => void; + position: number; + onChangeHandler: (value: string, position: number) => void; value: string; type: 'varName' | 'value'; blurred: boolean; @@ -18,7 +18,7 @@ interface DashboardInputFieldProps { /** * This component renders the input fields on the dashboard * @param {object} obj - the order number of a keyPair - * @param {number} obj.index - the order number of a keyPair + * @param {number} obj.pos - the order number of a keyPair * @param {function} obj.onChangeHandler - what happens when the input is modified * @param {string} obj.type - whether the input field is for a Key Name or for a Key Value * @param {string} obj.value - value of the InputField @@ -28,7 +28,7 @@ interface DashboardInputFieldProps { */ const DashboardInputField = ({ - index, + position, onChangeHandler, type, value, @@ -57,7 +57,7 @@ const DashboardInputField = ({ > - onChangeHandler(e.target.value.toUpperCase(), index) + onChangeHandler(e.target.value.toUpperCase(), position) } type={type} value={value} @@ -87,7 +87,7 @@ const DashboardInputField = ({ > onChangeHandler(e.target.value, index)} + onChange={(e) => onChangeHandler(e.target.value, position)} onScroll={syncScroll} className={`${ blurred diff --git a/frontend/components/utilities/secrets/getSecretsForProject.ts b/frontend/components/utilities/secrets/getSecretsForProject.ts index 284b8bee1d..3b63f9177a 100644 --- a/frontend/components/utilities/secrets/getSecretsForProject.ts +++ b/frontend/components/utilities/secrets/getSecretsForProject.ts @@ -74,26 +74,26 @@ const getSecretsForProject = async ({ setFileState(tempFileState); setData( - tempFileState.map((line, index) => [ - guidGenerator(), - index, - line['key'], - line['value'], - line['type'] - ]) - // .sort((a, b) => - // sortMethod == "alphabetical" - // ? a[2].localeCompare(b[2]) - // : b[2].localeCompare(a[2]) - // ) + tempFileState.map((line, index) => { + return { + id: guidGenerator(), + pos: index, + key: line['key'], + value: line['value'], + type: line['type'] + }; + }) ); - return tempFileState.map((line, index) => [ - guidGenerator(), - index, - line['key'], - line['value'], - line['type'] - ]); + + return tempFileState.map((line, index) => { + return { + id: guidGenerator(), + pos: index, + key: line['key'], + value: line['value'], + type: line['type'] + }; + }); } catch (error) { console.log('Something went wrong during accessing or decripting secrets.'); } diff --git a/frontend/pages/dashboard/[id].js b/frontend/pages/dashboard/[id].js index 95919749cb..4bb09c80f4 100644 --- a/frontend/pages/dashboard/[id].js +++ b/frontend/pages/dashboard/[id].js @@ -45,7 +45,7 @@ import getWorkspaces from '../api/workspace/getWorkspaces'; /** * This component represent a single row for an environemnt variable on the dashboard * @param {object} obj - * @param {String[]} obj.keyPair - data related to the environment variable (index, key, value, public/private) + * @param {String[]} obj.keyPair - data related to the environment variable (id, pos, key, value, public/private) * @param {function} obj.deleteRow - a function to delete a certain keyPair * @param {function} obj.modifyKey - modify the key of a certain environment variable * @param {function} obj.modifyValue - modify the value of a certain environment variable @@ -73,8 +73,8 @@ const KeyPair = ({ @@ -84,8 +84,8 @@ const KeyPair = ({ @@ -114,18 +114,18 @@ const KeyPair = ({
modifyVisibility( - keyPair[4] == 'personal' ? 'shared' : 'personal', - keyPair[1] + keyPair.type == 'personal' ? 'shared' : 'personal', + keyPair.pos ) } className="relative flex justify-start items-center cursor-pointer select-none py-2 px-2 rounded-md text-gray-400 hover:bg-white/10 duration-200 hover:text-gray-200 w-full" >
- {keyPair[4] == 'personal' ? 'Make Shared' : 'Make Personal'} + {keyPair.type == 'personal' ? 'Make Shared' : 'Make Personal'}
Math.floor(Math.random() * 16).toString(16)) .join(''), - keyPair[1] + keyPair.pos ); } }} @@ -147,7 +147,7 @@ const KeyPair = ({ >

Generate Random Hex

@@ -190,7 +190,7 @@ const KeyPair = ({