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={
-