Merge branch 'main' into snyk-upgrade-92cb55bf13238343efcdc817c6e6b2ce

This commit is contained in:
Maidul Islam
2023-04-18 14:24:52 -07:00
committed by GitHub
7 changed files with 33 additions and 36 deletions
+6 -2
View File
@@ -137,7 +137,9 @@ We're currently setting the foundation and building [integrations](https://infis
</tr> </tr>
<tr> <tr>
<td align="left" valign="middle"> <td align="left" valign="middle">
🔜 Supabase <a href="https://infisical.com/docs/integrations/cloud/supabase?ref=github.com">
✔️ Supabase
</a>
</td> </td>
<td align="left" valign="middle"> <td align="left" valign="middle">
<a href="https://infisical.com/docs/integrations/cicd/githubactions?ref=github.com"> <a href="https://infisical.com/docs/integrations/cicd/githubactions?ref=github.com">
@@ -145,7 +147,9 @@ We're currently setting the foundation and building [integrations](https://infis
</a> </a>
</td> </td>
<td align="left" valign="middle"> <td align="left" valign="middle">
🔜 Railway (https://github.com/Infisical/infisical/issues/271) <a href="https://infisical.com/docs/integrations/cloud/railway?ref=github.com">
✔️ Railway
</a>
</td> </td>
</tr> </tr>
<tr> <tr>
+7 -7
View File
@@ -38,7 +38,7 @@
"jsrp": "^0.2.4", "jsrp": "^0.2.4",
"libsodium-wrappers": "^0.7.10", "libsodium-wrappers": "^0.7.10",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mongoose": "^6.10.3", "mongoose": "^6.10.4",
"nodemailer": "^6.8.0", "nodemailer": "^6.8.0",
"posthog-node": "^2.6.0", "posthog-node": "^2.6.0",
"query-string": "^7.1.3", "query-string": "^7.1.3",
@@ -8308,9 +8308,9 @@
} }
}, },
"node_modules/mongoose": { "node_modules/mongoose": {
"version": "6.10.3", "version": "6.10.4",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.3.tgz", "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.4.tgz",
"integrity": "sha512-fZ3pIlQn7lM632r1l4qiU58lKrJ+FufKVG8TNeRXSChAeu9alCl5KoQ9bLw4jnQNYevSq9o+sqZmFDHP+EVW3g==", "integrity": "sha512-xCHVVEaOuhZxbthsKYxvHexWafJqWsl03sD7y7uyyt3euLd1sQoDI8DKueeJq9+hrbWkMkAGbGzgFPTIRqenPg==",
"dependencies": { "dependencies": {
"bson": "^4.7.0", "bson": "^4.7.0",
"kareem": "2.5.1", "kareem": "2.5.1",
@@ -19520,9 +19520,9 @@
} }
}, },
"mongoose": { "mongoose": {
"version": "6.10.3", "version": "6.10.4",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.3.tgz", "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.4.tgz",
"integrity": "sha512-fZ3pIlQn7lM632r1l4qiU58lKrJ+FufKVG8TNeRXSChAeu9alCl5KoQ9bLw4jnQNYevSq9o+sqZmFDHP+EVW3g==", "integrity": "sha512-xCHVVEaOuhZxbthsKYxvHexWafJqWsl03sD7y7uyyt3euLd1sQoDI8DKueeJq9+hrbWkMkAGbGzgFPTIRqenPg==",
"requires": { "requires": {
"bson": "^4.7.0", "bson": "^4.7.0",
"kareem": "2.5.1", "kareem": "2.5.1",
+1 -1
View File
@@ -30,7 +30,7 @@
"jsrp": "^0.2.4", "jsrp": "^0.2.4",
"libsodium-wrappers": "^0.7.10", "libsodium-wrappers": "^0.7.10",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mongoose": "^6.10.3", "mongoose": "^6.10.4",
"nodemailer": "^6.8.0", "nodemailer": "^6.8.0",
"posthog-node": "^2.6.0", "posthog-node": "^2.6.0",
"query-string": "^7.1.3", "query-string": "^7.1.3",
@@ -1,10 +1,9 @@
import React, { useState } from 'react' import React from 'react'
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { faXmark } from '@fortawesome/free-solid-svg-icons'; import { faXmark } from '@fortawesome/free-solid-svg-icons';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import Button from '../basic/buttons/Button'; import Button from '../basic/buttons/Button';
import { DeleteEnvVar } from '../basic/dialog/DeleteEnvVar';
type Props = { type Props = {
onSubmit: () => void; onSubmit: () => void;
@@ -13,7 +12,6 @@ type Props = {
export const DeleteActionButton = ({ onSubmit, isPlain }: Props) => { export const DeleteActionButton = ({ onSubmit, isPlain }: Props) => {
const { t } = useTranslation(); const { t } = useTranslation();
const [open, setOpen] = useState(false)
return ( return (
<div className={`${ <div className={`${
@@ -25,25 +23,17 @@ export const DeleteActionButton = ({ onSubmit, isPlain }: Props) => {
onKeyDown={() => null} onKeyDown={() => null}
role="button" role="button"
tabIndex={0} tabIndex={0}
onClick={() => setOpen(true)} onClick={onSubmit}
className="invisible group-hover:visible" className="invisible group-hover:visible"
> >
<FontAwesomeIcon className="text-bunker-300 hover:text-red pl-2 pr-6 text-lg mt-0.5" icon={faXmark} /> <FontAwesomeIcon className="text-bunker-300 hover:text-red pl-2 pr-6 text-lg mt-0.5" icon={faXmark} />
</div> </div>
: <Button : <Button
text={String(t("Delete"))} text={String(t("Delete"))}
// onButtonPressed={onSubmit}
color="red" color="red"
size="md" size="md"
onButtonPressed={() => setOpen(true)} onButtonPressed={onSubmit}
/>} />}
<DeleteEnvVar
isOpen={open}
onClose={() => {
setOpen(false)
}}
onSubmit={onSubmit}
/>
</div> </div>
) )
} }
+6 -6
View File
@@ -19,8 +19,8 @@ import {
} from '@fortawesome/free-solid-svg-icons'; } from '@fortawesome/free-solid-svg-icons';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { Tag } from 'public/data/frequentInterfaces'; import { Tag } from 'public/data/frequentInterfaces';
import queryString from 'query-string';
// import queryString from 'query-string';
import Button from '@app/components/basic/buttons/Button'; import Button from '@app/components/basic/buttons/Button';
import BottonRightPopup from '@app/components/basic/popups/BottomRightPopup'; import BottonRightPopup from '@app/components/basic/popups/BottomRightPopup';
import { useNotificationContext } from '@app/components/context/Notifications/NotificationProvider'; import { useNotificationContext } from '@app/components/context/Notifications/NotificationProvider';
@@ -173,7 +173,7 @@ export default function Dashboard() {
const { createNotification } = useNotificationContext(); const { createNotification } = useNotificationContext();
const router = useRouter(); const router = useRouter();
const envInURL = queryString.parse(router.asPath.split('?')[1])?.env; // const envInURL = queryString.parse(router.asPath.split('?')[1])?.env;
const workspaceId = router.query.id as string; const workspaceId = router.query.id as string;
const [workspaceEnvs, setWorkspaceEnvs] = useState<WorkspaceEnv[]>([]); const [workspaceEnvs, setWorkspaceEnvs] = useState<WorkspaceEnv[]>([]);
@@ -240,7 +240,7 @@ export default function Dashboard() {
setWorkspaceEnvs(accessibleEnvironments || []); setWorkspaceEnvs(accessibleEnvironments || []);
// set env // set env
const env = accessibleEnvironments?.[0] || { const env = accessibleEnvironments[0] || {
name: 'unknown', name: 'unknown',
slug: 'unknown' slug: 'unknown'
}; };
@@ -816,7 +816,7 @@ export default function Dashboard() {
}; };
return <div> return <div>
{!envInURL {false
? <DashboardEnvOverview /> ? <DashboardEnvOverview />
: (data ? ( : (data ? (
<div className="bg-bunker-800 max-h-screen h-full relative flex flex-col justify-between text-white dark"> <div className="bg-bunker-800 max-h-screen h-full relative flex flex-col justify-between text-white dark">
@@ -846,7 +846,7 @@ export default function Dashboard() {
<div className="w-full max-h-96 pb-2 dark:[color-scheme:dark]"> <div className="w-full max-h-96 pb-2 dark:[color-scheme:dark]">
<NavHeader <NavHeader
pageName={t('dashboard:title')} pageName={t('dashboard:title')}
currentEnv={workspaceEnvs?.filter(envir => envir.slug === envInURL)[0].name || ''} currentEnv={selectedEnv?.name || ''}
isProjectRelated isProjectRelated
userAvailableEnvs={workspaceEnvs} userAvailableEnvs={workspaceEnvs}
onEnvChange={handleOnEnvironmentChange} onEnvChange={handleOnEnvironmentChange}
@@ -1018,7 +1018,7 @@ export default function Dashboard() {
<div className="flex items-center justify-center h-full my-48"> <div className="flex items-center justify-center h-full my-48">
<Image <Image
src="/images/loading/loading.gif" src="/images/loading/loading.gif"
height={600} height={60}
width={100} width={100}
alt="infisical loading indicator" alt="infisical loading indicator"
/> />
@@ -28,8 +28,8 @@ const DashboardInput = ({ isOverridden, isSecretValueHidden, isReadOnly, secret,
ref.current.scrollLeft = e.currentTarget.scrollLeft; ref.current.scrollLeft = e.currentTarget.scrollLeft;
}; };
return <td key={`row-${secret?.key || ''}--`} className={`flex flex-row w-full min-w-[11rem] justify-center h-10 items-center ${!(secret?.value || secret?.value === '') ? "bg-red-400/10" : "bg-mineshaft-900/30"}`}> return <td key={`row-${secret?.key || ''}--`} className={`flex cursor-default flex-row w-full min-w-[11rem] justify-center h-10 items-center ${!(secret?.value || secret?.value === '') ? "bg-red-400/10" : "bg-mineshaft-900/30"}`}>
<div className="group relative whitespace-pre flex flex-col justify-center w-full"> <div className="group relative whitespace-pre flex flex-col justify-center w-full cursor-default">
<input <input
// {...register(`secrets.${index}.valueOverride`)} // {...register(`secrets.${index}.valueOverride`)}
defaultValue={(isOverridden ? secret.valueOverride : secret?.value || '')} defaultValue={(isOverridden ? secret.valueOverride : secret?.value || '')}
@@ -39,7 +39,7 @@ const DashboardInput = ({ isOverridden, isSecretValueHidden, isReadOnly, secret,
isSecretValueHidden isSecretValueHidden
? 'text-transparent focus:text-transparent active:text-transparent' ? 'text-transparent focus:text-transparent active:text-transparent'
: '' : ''
} z-10 peer font-mono ph-no-capture bg-transparent caret-transparent text-transparent text-sm px-2 py-2 w-full outline-none duration-200 no-scrollbar no-scrollbar::-webkit-scrollbar`} } z-10 peer cursor-default font-mono ph-no-capture bg-transparent caret-transparent text-transparent text-sm px-2 py-2 w-full outline-none duration-200 no-scrollbar no-scrollbar::-webkit-scrollbar`}
spellCheck="false" spellCheck="false"
/> />
<div <div
@@ -49,7 +49,7 @@ const DashboardInput = ({ isOverridden, isSecretValueHidden, isReadOnly, secret,
? 'text-bunker-800 group-hover:text-gray-400 peer-focus:text-gray-100 peer-active:text-gray-400 duration-200' ? 'text-bunker-800 group-hover:text-gray-400 peer-focus:text-gray-100 peer-active:text-gray-400 duration-200'
: '' : ''
} ${!secret?.value && "text-bunker-400 justify-center"} } ${!secret?.value && "text-bunker-400 justify-center"}
absolute flex flex-row whitespace-pre font-mono z-0 ${isSecretValueHidden && secret?.value ? 'invisible' : 'visible'} peer-focus:visible mt-0.5 ph-no-capture overflow-x-scroll bg-transparent h-10 text-sm px-2 py-2 w-full min-w-16 outline-none duration-100 no-scrollbar no-scrollbar::-webkit-scrollbar`} absolute cursor-default flex flex-row whitespace-pre font-mono z-0 ${isSecretValueHidden && secret?.value ? 'invisible' : 'visible'} peer-focus:visible mt-0.5 ph-no-capture overflow-x-scroll bg-transparent h-10 text-sm px-2 py-2 w-full min-w-16 outline-none duration-100 no-scrollbar no-scrollbar::-webkit-scrollbar`}
> >
{(secret?.value || secret?.value === '') && (isOverridden ? secret.valueOverride : secret?.value)?.split('').length === 0 && <span className='text-bunker-400/80 font-sans w-full'>EMPTY</span>} {(secret?.value || secret?.value === '') && (isOverridden ? secret.valueOverride : secret?.value)?.split('').length === 0 && <span className='text-bunker-400/80 font-sans w-full'>EMPTY</span>}
{(secret?.value || secret?.value === '') && (isOverridden ? secret.valueOverride : secret?.value)?.split(REGEX).map((word: string) => { {(secret?.value || secret?.value === '') && (isOverridden ? secret.valueOverride : secret?.value)?.split(REGEX).map((word: string) => {
@@ -78,7 +78,7 @@ const DashboardInput = ({ isOverridden, isSecretValueHidden, isReadOnly, secret,
</span> </span>
); );
})} })}
{!(secret?.value || secret?.value === '') && <span className='text-red-500/80 font-sans text-xs italic'>missing</span>} {!(secret?.value || secret?.value === '') && <span className='text-red-500/80 cursor-default font-sans text-xs italic'>missing</span>}
</div> </div>
{(isSecretValueHidden && secret?.value) && ( {(isSecretValueHidden && secret?.value) && (
<div className='absolute flex flex-row justify-between items-center z-0 peer pr-2 peer-active:hidden peer-focus:hidden group-hover:bg-white/[0.00] duration-100 h-10 w-full text-bunker-400 text-clip'> <div className='absolute flex flex-row justify-between items-center z-0 peer pr-2 peer-active:hidden peer-focus:hidden group-hover:bg-white/[0.00] duration-100 h-10 w-full text-bunker-400 text-clip'>
@@ -118,7 +118,7 @@ export const EnvComparisonRow = ({
<tr className="group min-w-full flex flex-row items-center hover:bg-bunker-700"> <tr className="group min-w-full flex flex-row items-center hover:bg-bunker-700">
<td className="w-10 h-10 px-4 flex items-center justify-center border-none"><div className='text-center w-10 text-xs text-bunker-400'>{index + 1}</div></td> <td className="w-10 h-10 px-4 flex items-center justify-center border-none"><div className='text-center w-10 text-xs text-bunker-400'>{index + 1}</div></td>
<td className="flex flex-row justify-between items-center h-full min-w-[200px] lg:min-w-[220px] xl:min-w-[250px]"> <td className="flex flex-row justify-between items-center h-full min-w-[200px] lg:min-w-[220px] xl:min-w-[250px]">
<div className="flex flex-row items-center h-8">{secret?.key || ''}</div> <div className="flex flex-row items-center h-8 cursor-default">{secret?.key || ''}</div>
<button type="button" className='mr-2 text-bunker-400 hover:text-bunker-300 invisible group-hover:visible' onClick={() => setAreValuesHiddenThisRow(!areValuesHiddenThisRow)}> <button type="button" className='mr-2 text-bunker-400 hover:text-bunker-300 invisible group-hover:visible' onClick={() => setAreValuesHiddenThisRow(!areValuesHiddenThisRow)}>
<FontAwesomeIcon icon={areValuesHiddenThisRow ? faEye : faEyeSlash} /> <FontAwesomeIcon icon={areValuesHiddenThisRow ? faEye : faEyeSlash} />
</button> </button>
@@ -62,7 +62,10 @@ export const OrgSettingsPage = () => {
(orgUsers || []).length >= 5 && (orgUsers || []).length >= 5 &&
subscriptionPlan === plans.starter && subscriptionPlan === plans.starter &&
host === 'https://app.infisical.com' && host === 'https://app.infisical.com' &&
currentWorkspace?._id !== '63ea8121b6e2b0543ba79616'; currentWorkspace?._id !== '63ea8121b6e2b0543ba79616' &&
currentWorkspace?._id !== '634870246fd2e26f28e76996' &&
currentWorkspace?._id !== '63d823cef9e728a0a961255a' &&
currentWorkspace?._id !== '6412ec319db25595ac00b8c6';
const onRenameOrg = async (name: string) => { const onRenameOrg = async (name: string) => {
if (!currentOrg?._id) return; if (!currentOrg?._id) return;