From 1826058684bec55310484081417ad9bd2844c19e Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Fri, 10 Jun 2022 22:28:04 -0230 Subject: [PATCH] Adds a small password generator to the db password input area --- studio/components/ui/PasswordStrengthBar.tsx | 8 ++- studio/package-lock.json | 58 ++++++++++++++------ studio/package.json | 3 +- studio/pages/new/[slug].tsx | 30 +++++++--- 4 files changed, 69 insertions(+), 30 deletions(-) diff --git a/studio/components/ui/PasswordStrengthBar.tsx b/studio/components/ui/PasswordStrengthBar.tsx index 25d4729a994..cbf6efde46e 100644 --- a/studio/components/ui/PasswordStrengthBar.tsx +++ b/studio/components/ui/PasswordStrengthBar.tsx @@ -8,13 +8,15 @@ import { Typography } from '@supabase/ui' interface Props { passwordStrengthScore: number passwordStrengthMessage: string - password: string + password: string, + generateStrongPassword: () => void } const PasswordStrengthBar = ({ passwordStrengthScore = 0, passwordStrengthMessage = '', password = '', + generateStrongPassword }: Props) => { return ( <> @@ -25,7 +27,7 @@ const PasswordStrengthBar = ({ aria-valuenow={(PASSWORD_STRENGTH_PERCENTAGE as any)[passwordStrengthScore]} aria-valuetext={(PASSWORD_STRENGTH_PERCENTAGE as any)[passwordStrengthScore]} role="progressbar" - className="mb-2 bg-bg-alt-light dark:bg-bg-alt-dark rounded overflow-hidden transition-all border dark:border-dark" + className="mb-2 overflow-hidden transition-all border rounded bg-bg-alt-light dark:bg-bg-alt-dark dark:border-dark" >
{passwordStrengthMessage ? passwordStrengthMessage - : 'This is the password to your postgres database, so it must be a strong password and hard to guess.'} + : 'This is the password to your postgres database, so it must be a strong password and hard to guess.'} {' '} . ) diff --git a/studio/package-lock.json b/studio/package-lock.json index fb454e8e61b..6def253517d 100644 --- a/studio/package-lock.json +++ b/studio/package-lock.json @@ -31,9 +31,10 @@ "crypto-js": "^4.1.1", "dayjs": "^1.11.0", "file-saver": "^2.0.5", + "generate-password": "^1.7.0", "immutability-helper": "^3.1.1", "lodash": "^4.17.21", - "lottie-react": "^2.1.0", + "lottie-react": "^2.2.1", "markdown-table": "=2.0.0", "mobx": "^6.3.2", "mobx-react-lite": "^3.2.0", @@ -15013,6 +15014,11 @@ "node": ">=0.10.0" } }, + "node_modules/generate-password": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/generate-password/-/generate-password-1.7.0.tgz", + "integrity": "sha512-WPCtlfy0jexf7W5IbwxGUgpIDvsZIohbI2DAq2Q6TSlKKis+G4GT9sxvPxrZUGL8kP6WUXMWNqYnxY6DDKAdFA==" + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -19782,22 +19788,21 @@ } }, "node_modules/lottie-react": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lottie-react/-/lottie-react-2.1.0.tgz", - "integrity": "sha512-sHDJb5aeh1letUIWqwidHoHZj07ZOZQoLuUgy0gqt9FB/XiCtAZ2+421Cn+ZkHR7anVvWljKhGgctQCtgFloUA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/lottie-react/-/lottie-react-2.2.1.tgz", + "integrity": "sha512-lAdIUw+zeHLX3gtyLkisa4QM9NkTUUeZTsEL53laBEsjIH4JibgwkioZuza8CtwZ7/cpPZRbCRXWKfiuaDZWww==", "dependencies": { - "lottie-web": "^5.7.3" + "lottie-web": "^5.8.1" }, "peerDependencies": { - "prop-types": "^15.5.7", - "react": "^16.8.0", - "react-dom": "^16.8.0" + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" } }, "node_modules/lottie-web": { - "version": "5.7.14", - "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.7.14.tgz", - "integrity": "sha512-J+QEPse7Rws0XvTqRJNtcE8cszb5FWYFHubEK6bgDJtw64/AQJ40aazbWXsWGBM4sm/PgLBLgmmhDU4QpLiieg==" + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.9.4.tgz", + "integrity": "sha512-bSs1ZTPifnBVejO1MnQHdfrKfcn02YTCmgOh2wcAEICqRA0V7GzDh8FnwXY6+EzT+i8XOunaIloo/5xC5YNbsA==" }, "node_modules/lower-case": { "version": "2.0.2", @@ -20380,6 +20385,12 @@ } } }, + "node_modules/monaco-editor": { + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.33.0.tgz", + "integrity": "sha512-VcRWPSLIUEgQJQIE0pVT8FcGBIgFoxz7jtqctE+IiCxWugD0DwgyQBcZBhdSrdMC84eumoqMZsGl2GTreOzwqw==", + "peer": true + }, "node_modules/moo-color": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/moo-color/-/moo-color-1.0.2.tgz", @@ -40570,6 +40581,11 @@ } } }, + "generate-password": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/generate-password/-/generate-password-1.7.0.tgz", + "integrity": "sha512-WPCtlfy0jexf7W5IbwxGUgpIDvsZIohbI2DAq2Q6TSlKKis+G4GT9sxvPxrZUGL8kP6WUXMWNqYnxY6DDKAdFA==" + }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -44136,17 +44152,17 @@ } }, "lottie-react": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lottie-react/-/lottie-react-2.1.0.tgz", - "integrity": "sha512-sHDJb5aeh1letUIWqwidHoHZj07ZOZQoLuUgy0gqt9FB/XiCtAZ2+421Cn+ZkHR7anVvWljKhGgctQCtgFloUA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/lottie-react/-/lottie-react-2.2.1.tgz", + "integrity": "sha512-lAdIUw+zeHLX3gtyLkisa4QM9NkTUUeZTsEL53laBEsjIH4JibgwkioZuza8CtwZ7/cpPZRbCRXWKfiuaDZWww==", "requires": { - "lottie-web": "^5.7.3" + "lottie-web": "^5.8.1" } }, "lottie-web": { - "version": "5.7.14", - "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.7.14.tgz", - "integrity": "sha512-J+QEPse7Rws0XvTqRJNtcE8cszb5FWYFHubEK6bgDJtw64/AQJ40aazbWXsWGBM4sm/PgLBLgmmhDU4QpLiieg==" + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.9.4.tgz", + "integrity": "sha512-bSs1ZTPifnBVejO1MnQHdfrKfcn02YTCmgOh2wcAEICqRA0V7GzDh8FnwXY6+EzT+i8XOunaIloo/5xC5YNbsA==" }, "lower-case": { "version": "2.0.2", @@ -44594,6 +44610,12 @@ "integrity": "sha512-hwURgfmP2apX3HQrB55V9DN47kuN3C6KlQvI5UIfJRibXma72C/JudcNt2r9dWjAdFMrcZoz1ivvtXMCkJ2aQA==", "requires": {} }, + "monaco-editor": { + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.33.0.tgz", + "integrity": "sha512-VcRWPSLIUEgQJQIE0pVT8FcGBIgFoxz7jtqctE+IiCxWugD0DwgyQBcZBhdSrdMC84eumoqMZsGl2GTreOzwqw==", + "peer": true + }, "moo-color": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/moo-color/-/moo-color-1.0.2.tgz", diff --git a/studio/package.json b/studio/package.json index 9351e173452..3e6d9fe0220 100644 --- a/studio/package.json +++ b/studio/package.json @@ -35,9 +35,10 @@ "crypto-js": "^4.1.1", "dayjs": "^1.11.0", "file-saver": "^2.0.5", + "generate-password": "^1.7.0", "immutability-helper": "^3.1.1", "lodash": "^4.17.21", - "lottie-react": "^2.1.0", + "lottie-react": "^2.2.1", "markdown-table": "=2.0.0", "mobx": "^6.3.2", "mobx-react-lite": "^3.2.0", diff --git a/studio/pages/new/[slug].tsx b/studio/pages/new/[slug].tsx index 19b842c5b85..d15d6180fc2 100644 --- a/studio/pages/new/[slug].tsx +++ b/studio/pages/new/[slug].tsx @@ -35,6 +35,7 @@ import { NotOrganizationOwnerWarning, EmptyPaymentMethodWarning, } from 'components/interfaces/Organization/NewProject' +import generator from 'generate-password'; interface StripeCustomer { paymentMethods: any @@ -193,6 +194,17 @@ const Wizard: NextPageWithLayout = () => { } } + function generateStrongPassword() { + const password = generator.generate({ + length: 16, + numbers: true, + uppercase: true + }); + + setDbPass(password) + delayedCheckPasswordStrength(password) + } + return ( {
} footer={ -
+
{!projectCreationDisabled && ( - You can rename your project later + You can rename your project later )}