mirror of
https://github.com/modrinth/code.git
synced 2026-09-04 05:48:57 +00:00
feat: update auth flow (#5790)
* Backend routes for choosing username in OAuth flow * fix up oauth flow routes * improve URL-related OAuth code * Use user-provided callback addr instead of SELF_ADDR * Revert "Use user-provided callback addr instead of SELF_ADDR" This reverts commit7ea0635d86. * fix flow * fix: backend response for create oauth account * feat: new auth flow (#5840) * update auth with new designs * refactor: auth.js to auth.ts * refactor: componentize auth pages * fix: auth pages height * feat: initial implementation of new sign-in oauth * fix create account flow * fix checkbox * remove hard coded username * implement create user validation endpoint and add more specific error responses * feat: implement under 13 DOB guard and email/password validation route * fix: TOCTOU issue * refactor: pnpm prepr * fix: make sure staging uses staging * fix: hcaptcha styles * fix: copy * remove: auth/welcome page as its no longer used * refactor: bring root page card styles into individual components and use tailwind * fix: account settings modals to use new modal and fix lots of bad styles * refactor: pnpm prepr * feat: implement last signed in indicator * fix: append number when generated name from email is taken * refactor: pnpm prepr * fix: last sign in badge color * fix: qa issues * refactor: pnpm prepr * fix: hover effect on native date picker * chore: temp staging undo * Revert "chore: temp staging undo" This reverts commitcad6bd4f92. * feat: handle app create account * fix: last signed in style * fix: add initOnMounted for SSR race * refactor: use typescript * refactor: pnpm prepr * refactor: use typescript for reset-password * refactor: convert verify-email to use typescript * refactor: convert authorize.vue to use typescript * fix: authorize.vue error states * feat: small style updates * feat: implement date picker component * feat: improve UX and styles for range select * refactor: pnpm prepr * fix: range select border styles * feat: implement date picker component in create account * feat: implement preserve date for date picker * update rust toolchain * increase recursion limit * fix: date picker can be null * fix: calculate age based on user's timezone * fix: number input icons color * fix: date picker icons * feat: improve styles * fix: add width on date * fix: hover color bad on number input * fix lints * feat: add default date open view * fmt * fix: account.vue * fix: remove default date to open 13 years ago * fix: edit copy on info banner * fix: cannot hover over project card tooltip items (#6071) fix: cannot hover over project cards * feat: improve add dependency flow (#6075) * fix: shadow on nav * feat: improve add dependency flow * feat: update suggested dependency style * feat: update dependency rows to use version number and update styles * feat: implement combobox select searched text on focus * feat: add Tabs.vue * feat: update nav tabs to use tabs * feat: improve project search dropdown * fix: dependency search not clearing inbound query * fix: combobox no options open state bug * feat: improve dependency project and version search * fix: open modrinth project links in the app (#6072) * pin tanstack versions + set pnpm min age to 7 days * squash commits * fix: 2 factor auth enter code screen styles * update copy * update copy * improve reset password * feat: update sign in screen * fix: unused import * Merge branch 'main' into boris/dev-908-backend-changes * Revert "Merge branch 'main' into boris/dev-908-backend-changes" This reverts commitb9b03796e3. * fix: add stroke * feat: add passkey support (#6375) * feat: add passkey backend * feat: passkey frontend * invalidate sessions on compromised passkey * chore: run sqlx prepare * fix: make passkey button use both collumns to prevent empty space * fix: correctly verify max passkeys in finish route * fix: use structs for response * fix: add rp name default * style: use web::Json * fmt * feat: improve manage passkeys UI * fix copy * pnpm prepr --------- Co-authored-by: tdgao <mr.trumgao@gmail.com> Co-authored-by: Truman Gao <106889354+tdgao@users.noreply.github.com> Co-authored-by: Michael H. <michael@iptables.sh> Co-authored-by: Calum H. (IMB11) <contact@cal.engineer> Co-authored-by: Calum H. <calum@modrinth.com> Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com> Co-authored-by: DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com>
This commit is contained in:
co-authored by
tdgao
Truman Gao
Michael H.
Calum H.
Calum H.
Prospector
DeDiamondPro
parent
6fc741f7c0
commit
ef4044534f
@@ -731,12 +731,72 @@
|
||||
"auth.authorize.authorize-app-name": {
|
||||
"message": "Authorize {appName}"
|
||||
},
|
||||
"auth.authorize.error.missing-parameters": {
|
||||
"message": "Missing required OAuth query parameters."
|
||||
},
|
||||
"auth.authorize.error.no-redirect-url": {
|
||||
"message": "No redirect location found in response"
|
||||
},
|
||||
"auth.authorize.errro-title": {
|
||||
"message": "An Error Occured"
|
||||
},
|
||||
"auth.authorize.redirect-url": {
|
||||
"message": "You will be redirected to <redirect-url>{url}</redirect-url>"
|
||||
},
|
||||
"auth.continue-with-provider": {
|
||||
"message": "Continue with {provider}"
|
||||
},
|
||||
"auth.create-account.age-requirement.warning-title": {
|
||||
"message": "Age requirement"
|
||||
},
|
||||
"auth.create-account.complete-sign-up": {
|
||||
"message": "Complete sign up"
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.text": {
|
||||
"message": "Please enter a valid date of birth. Year cannot be 0000."
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.title": {
|
||||
"message": "Invalid date of birth"
|
||||
},
|
||||
"auth.create-account.date-of-birth.label": {
|
||||
"message": "Date of birth"
|
||||
},
|
||||
"auth.create-account.date-of-birth.placeholder": {
|
||||
"message": "Select your date of birth"
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.text": {
|
||||
"message": "Please enter your date of birth before continuing."
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.title": {
|
||||
"message": "Date of birth required"
|
||||
},
|
||||
"auth.create-account.date-of-birth.under13-helper": {
|
||||
"message": "You do not meet the age requirement to create an account at Modrinth."
|
||||
},
|
||||
"auth.create-account.info-panel.source-code-link": {
|
||||
"message": "Relevant source code"
|
||||
},
|
||||
"auth.create-account.info-panel.text": {
|
||||
"message": "We do not store your date of birth. We only use it during sign-up to validate COPPA compliance."
|
||||
},
|
||||
"auth.create-account.page-title": {
|
||||
"message": "Create Account"
|
||||
},
|
||||
"auth.create-account.security-check.label": {
|
||||
"message": "Security check"
|
||||
},
|
||||
"auth.create-account.subscribe.label": {
|
||||
"message": "Keep me updated on the cool things Modrinth is working on via email"
|
||||
},
|
||||
"auth.create-account.title": {
|
||||
"message": "Create an Account"
|
||||
},
|
||||
"auth.create-account.username.label": {
|
||||
"message": "Username"
|
||||
},
|
||||
"auth.create-account.username.placeholder": {
|
||||
"message": "Enter username"
|
||||
},
|
||||
"auth.reset-password.method-choice.action": {
|
||||
"message": "Send recovery email"
|
||||
},
|
||||
@@ -771,53 +831,68 @@
|
||||
"message": "Reset your password"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Please enter a two-factor code to proceed."
|
||||
"message": "Enter the 6-digit code from your authenticator app, or one of your backup codes."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Enter two-factor code"
|
||||
"message": "Two-factor authentication"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Enter code..."
|
||||
},
|
||||
"auth.sign-in.additional-options": {
|
||||
"message": "<forgot-password-link>Forgot password?</forgot-password-link> • <create-account-link>Create an account</create-account-link>"
|
||||
"auth.sign-in.continue-with-email": {
|
||||
"message": "Continue with Email"
|
||||
},
|
||||
"auth.sign-in.continue-with-passkey": {
|
||||
"message": "Continue with passkey"
|
||||
},
|
||||
"auth.sign-in.create-account": {
|
||||
"message": "Sign up"
|
||||
},
|
||||
"auth.sign-in.forgot-password": {
|
||||
"message": "Forgot password"
|
||||
},
|
||||
"auth.sign-in.last-sign-in": {
|
||||
"message": "Last used"
|
||||
},
|
||||
"auth.sign-in.no-account": {
|
||||
"message": "Don't have an account?"
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Sign in with"
|
||||
"message": "Sign into Modrinth"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Sign In"
|
||||
},
|
||||
"auth.sign-in.use-password": {
|
||||
"message": "Or use a password"
|
||||
"auth.sign-up.age-requirement.warning-title": {
|
||||
"message": "Age requirement"
|
||||
},
|
||||
"auth.sign-up.action.create-account": {
|
||||
"message": "Create account"
|
||||
"auth.sign-up.continue-with-email": {
|
||||
"message": "Continue with Email"
|
||||
},
|
||||
"auth.sign-up.legal-dislaimer": {
|
||||
"message": "By creating an account, you agree to Modrinth's <terms-link>Terms</terms-link> and <privacy-policy-link>Privacy Policy</privacy-policy-link>."
|
||||
},
|
||||
"auth.sign-up.notification.password-mismatch.text": {
|
||||
"message": "Passwords do not match!"
|
||||
"auth.sign-up.show-fewer-options": {
|
||||
"message": "Show fewer options"
|
||||
},
|
||||
"auth.sign-up.show-other-options": {
|
||||
"message": "Show other options"
|
||||
},
|
||||
"auth.sign-up.sign-in-option.title": {
|
||||
"message": "Already have an account?"
|
||||
},
|
||||
"auth.sign-up.subscribe.label": {
|
||||
"message": "Subscribe to updates about Modrinth"
|
||||
},
|
||||
"auth.sign-up.title": {
|
||||
"message": "Sign Up"
|
||||
},
|
||||
"auth.sign-up.title.create-account": {
|
||||
"message": "Or create an account yourself"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Sign up with"
|
||||
"message": "Create an Account"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Account settings"
|
||||
},
|
||||
"auth.verify-email.action.discover-mods": {
|
||||
"message": "Discover mods"
|
||||
},
|
||||
"auth.verify-email.already-verified.description": {
|
||||
"message": "Your email is already verified!"
|
||||
},
|
||||
@@ -836,6 +911,15 @@
|
||||
"auth.verify-email.failed-verification.title": {
|
||||
"message": "Email verification failed"
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.description": {
|
||||
"message": "An email with a link to verify your account has been sent to {email}."
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.title": {
|
||||
"message": "Email sent"
|
||||
},
|
||||
"auth.verify-email.notification.error-occurred.title": {
|
||||
"message": "An error occurred"
|
||||
},
|
||||
"auth.verify-email.post-verification.description": {
|
||||
"message": "Your email address has been successfully verified!"
|
||||
},
|
||||
@@ -845,21 +929,6 @@
|
||||
"auth.verify-email.title": {
|
||||
"message": "Verify Email"
|
||||
},
|
||||
"auth.welcome.checkbox.subscribe": {
|
||||
"message": "Subscribe to updates about Modrinth"
|
||||
},
|
||||
"auth.welcome.description": {
|
||||
"message": "You’re now part of the awesome community of creators & explorers already building, downloading, and staying up-to-date with amazing mods."
|
||||
},
|
||||
"auth.welcome.label.tos": {
|
||||
"message": "By creating an account, you have agreed to Modrinth's <terms-link>Terms</terms-link> and <privacy-policy-link>Privacy Policy</privacy-policy-link>."
|
||||
},
|
||||
"auth.welcome.long-title": {
|
||||
"message": "Welcome to Modrinth!"
|
||||
},
|
||||
"auth.welcome.title": {
|
||||
"message": "Welcome"
|
||||
},
|
||||
"collection.button.edit-icon": {
|
||||
"message": "Edit icon"
|
||||
},
|
||||
@@ -4031,6 +4100,48 @@
|
||||
"settings.account.security.email.title": {
|
||||
"message": "Email"
|
||||
},
|
||||
"settings.account.security.passkey.add": {
|
||||
"message": "Add passkey"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.description": {
|
||||
"message": "Make sure to pick something memorable, so you can identify this passkey later."
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.label": {
|
||||
"message": "Name"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.placeholder": {
|
||||
"message": "My passkey"
|
||||
},
|
||||
"settings.account.security.passkey.description": {
|
||||
"message": "Manage your registered passkeys, or add a new one."
|
||||
},
|
||||
"settings.account.security.passkey.modal.added": {
|
||||
"message": "Added {ago}"
|
||||
},
|
||||
"settings.account.security.passkey.modal.last-used": {
|
||||
"message": "Last used {ago}"
|
||||
},
|
||||
"settings.account.security.passkey.modal.loading": {
|
||||
"message": "Loading passkeys…"
|
||||
},
|
||||
"settings.account.security.passkey.modal.never-used": {
|
||||
"message": "Never used"
|
||||
},
|
||||
"settings.account.security.passkey.modal.no-passkeys": {
|
||||
"message": "You do not have any passkeys registered."
|
||||
},
|
||||
"settings.account.security.passkey.remove.description": {
|
||||
"message": "This will permanently remove the passkey \"{name}\". You will no longer be able to sign in with it."
|
||||
},
|
||||
"settings.account.security.passkey.remove.title": {
|
||||
"message": "Are you sure you want to remove this passkey?"
|
||||
},
|
||||
"settings.account.security.passkey.rename-modal.header": {
|
||||
"message": "Rename passkey"
|
||||
},
|
||||
"settings.account.security.passkey.title": {
|
||||
"message": "Manage passkeys"
|
||||
},
|
||||
"settings.account.security.password.action.add": {
|
||||
"message": "Add password"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user