about summary refs log tree commit diff
path: root/src/lib/strings/password.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/strings/password.ts')
-rw-r--r--src/lib/strings/password.ts19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/lib/strings/password.ts b/src/lib/strings/password.ts
new file mode 100644
index 000000000..e7735b90e
--- /dev/null
+++ b/src/lib/strings/password.ts
@@ -0,0 +1,19 @@
+// Regex for base32 string for testing reset code
+const RESET_CODE_REGEX = /^[A-Z2-7]{5}-[A-Z2-7]{5}$/
+
+export function checkAndFormatResetCode(code: string): string | false {
+  // Trim the reset code
+  let fixed = code.trim().toUpperCase()
+
+  // Add a dash if needed
+  if (fixed.length === 10) {
+    fixed = `${fixed.slice(0, 5)}-${fixed.slice(5, 10)}`
+  }
+
+  // Check that it is a valid format
+  if (!RESET_CODE_REGEX.test(fixed)) {
+    return false
+  }
+
+  return fixed
+}