') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); feat(clerk-js,localizations,shared,types): Prompt user to reset pwned… by yourtallness · Pull Request #3075 · clerk/javascript · GitHub
Skip to content

feat(clerk-js,localizations,shared,types): Prompt user to reset pwned… - #3075

Merged
yourtallness merged 1 commit into
release/v4from
yourtallness/hibp_on_sign_in_v4
Apr 1, 2024
Merged

feat(clerk-js,localizations,shared,types): Prompt user to reset pwned…#3075
yourtallness merged 1 commit into
release/v4from
yourtallness/hibp_on_sign_in_v4

Conversation

@yourtallness

@yourtallnessyourtallness commented Mar 31, 2024

Copy link
Copy Markdown
Contributor

… password at sign-in

If admin has enabled password_settings.enforce_on_sign_in and HIBP is enabled, then a password could potentially be detected as pwned at a subsequent sign-in.

The API will respond with error code form_password_pwned, in which case we will show a corresponding error and show the alternative method list, prompting them to reset their password.

Back-port of #3034

Description

Checklist

  • npm test runs as expected.
  • npm run build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

@yourtallness
yourtallness requested a review from a team as a code ownerMarch 31, 2024 19:54
@changeset-bot

changeset-botBot commented Mar 31, 2024

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 65dbf19

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 14 packages
NameType
@clerk/localizationsMinor
@clerk/clerk-jsMinor
@clerk/sharedMinor
@clerk/typesMinor
@clerk/chrome-extensionPatch
@clerk/clerk-expoPatch
@clerk/backendPatch
@clerk/fastifyPatch
@clerk/nextjsPatch
@clerk/clerk-reactPatch
@clerk/remixPatch
@clerk/clerk-sdk-nodePatch
gatsby-plugin-clerkPatch
@clerk/themesPatch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@yourtallness
yourtallness marked this pull request as draft March 31, 2024 19:54
@yourtallness
yourtallnessforce-pushed the yourtallness/hibp_on_sign_in_v4 branch 2 times, most recently from 7d6e4bd to d01a5d9CompareApril 1, 2024 10:01
@yourtallness
yourtallnessforce-pushed the yourtallness/hibp_on_sign_in_v4 branch from d01a5d9 to 65dbf19CompareApril 1, 2024 10:11
@yourtallness
yourtallness marked this pull request as ready for review April 1, 2024 10:17

@panteliselefpanteliselef left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm, could you update the description and mention which PR this is a backport of ?

@yourtallness

Copy link
Copy Markdown
ContributorAuthor

lgtm, could you update the description and mention which PR this is a backport of ?

Done

@yourtallness
yourtallness merged commit b472643 into release/v4Apr 1, 2024
@yourtallness
yourtallness deleted the yourtallness/hibp_on_sign_in_v4 branch April 1, 2024 10:45
@clerk-cookieclerk-cookie mentioned this pull request Mar 29, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@yourtallness@panteliselef@clerk-cookie