Просмотр исходного кода

Bump better-auth to 1.5.6 (#126)

* bump packages

* types
Bernt Christian Egeland 6 месяцев назад
Родитель
Сommit
e7060fba5b

+ 162 - 70
package-lock.json

@@ -10,7 +10,7 @@
       "license": "Elastic-2.0",
       "license": "Elastic-2.0",
       "dependencies": {
       "dependencies": {
         "@aws-sdk/client-ses": "^3.1011.0",
         "@aws-sdk/client-ses": "^3.1011.0",
-        "@better-auth/passkey": "^1.4.19",
+        "@better-auth/passkey": "^1.5.6",
         "@dnd-kit/core": "^6.3.1",
         "@dnd-kit/core": "^6.3.1",
         "@dnd-kit/sortable": "^10.0.0",
         "@dnd-kit/sortable": "^10.0.0",
         "@dnd-kit/utilities": "^3.2.2",
         "@dnd-kit/utilities": "^3.2.2",
@@ -27,13 +27,14 @@
         "@tiptap/starter-kit": "^3.19.0",
         "@tiptap/starter-kit": "^3.19.0",
         "@types/qrcode": "^1.5.6",
         "@types/qrcode": "^1.5.6",
         "archiver": "^7.0.1",
         "archiver": "^7.0.1",
-        "better-auth": "^1.4.18",
+        "better-auth": "^1.5.6",
         "bson": "^7.2.0",
         "bson": "^7.2.0",
         "class-variance-authority": "^0.7.1",
         "class-variance-authority": "^0.7.1",
         "clsx": "^2.1.1",
         "clsx": "^2.1.1",
         "cmdk": "^1.1.1",
         "cmdk": "^1.1.1",
         "cron": "^4.4.0",
         "cron": "^4.4.0",
         "date-fns": "^4.1.0",
         "date-fns": "^4.1.0",
+        "dotenv": "^17.2.4",
         "form-data": "^4.0.5",
         "form-data": "^4.0.5",
         "html5-qrcode": "^2.3.8",
         "html5-qrcode": "^2.3.8",
         "jszip": "^3.10.1",
         "jszip": "^3.10.1",
@@ -83,7 +84,6 @@
         "@types/react-dom": "^19",
         "@types/react-dom": "^19",
         "@types/ws": "^8.18.1",
         "@types/ws": "^8.18.1",
         "@vitest/coverage-v8": "^4.1.2",
         "@vitest/coverage-v8": "^4.1.2",
-        "dotenv": "^17.2.4",
         "jsdom": "^29.0.0",
         "jsdom": "^29.0.0",
         "shadcn": "^4.1.1",
         "shadcn": "^4.1.1",
         "tailwindcss": "^4",
         "tailwindcss": "^4",
@@ -1334,57 +1334,54 @@
       }
       }
     },
     },
     "node_modules/@better-auth/core": {
     "node_modules/@better-auth/core": {
-      "version": "1.4.19",
-      "resolved": "https://registry.npmjs.org/@better-auth/core/-/core-1.4.19.tgz",
-      "integrity": "sha512-uADLHG1jc5BnEJi7f6ijUN5DmPPRSj++7m/G19z3UqA3MVCo4Y4t1MMa4IIxLCqGDFv22drdfxescgW+HnIowA==",
+      "version": "1.5.6",
+      "resolved": "https://registry.npmjs.org/@better-auth/core/-/core-1.5.6.tgz",
+      "integrity": "sha512-Ez9DZdIMFyxHremmoLz1emFPGNQomDC1jqqBPnZ6Ci+6TiGN3R9w/Y03cJn6I8r1ycKgOzeVMZtJ/erOZ27Gsw==",
+      "license": "MIT",
       "dependencies": {
       "dependencies": {
-        "@standard-schema/spec": "^1.0.0",
-        "zod": "^4.3.5"
+        "@opentelemetry/semantic-conventions": "^1.39.0",
+        "@standard-schema/spec": "^1.1.0",
+        "zod": "^4.3.6"
       },
       },
       "peerDependencies": {
       "peerDependencies": {
-        "@better-auth/utils": "0.3.0",
+        "@better-auth/utils": "0.3.1",
         "@better-fetch/fetch": "1.1.21",
         "@better-fetch/fetch": "1.1.21",
-        "better-call": "1.1.8",
+        "@cloudflare/workers-types": ">=4",
+        "@opentelemetry/api": "^1.9.0",
+        "better-call": "1.3.2",
         "jose": "^6.1.0",
         "jose": "^6.1.0",
         "kysely": "^0.28.5",
         "kysely": "^0.28.5",
         "nanostores": "^1.0.1"
         "nanostores": "^1.0.1"
+      },
+      "peerDependenciesMeta": {
+        "@cloudflare/workers-types": {
+          "optional": true
+        }
       }
       }
     },
     },
     "node_modules/@better-auth/passkey": {
     "node_modules/@better-auth/passkey": {
-      "version": "1.4.19",
-      "resolved": "https://registry.npmjs.org/@better-auth/passkey/-/passkey-1.4.19.tgz",
-      "integrity": "sha512-KzUUrMgw6FTxPt7lcD0ZDx4RYIX16aTx73mFtEdACDY40HBheyY+U092+kpTf4oK+PX/g7B9mpX7R8OHH/LeJw==",
+      "version": "1.5.6",
+      "resolved": "https://registry.npmjs.org/@better-auth/passkey/-/passkey-1.5.6.tgz",
+      "integrity": "sha512-2DQkPK5Rw7g6Zixa3MSoH31s4Au96O94+QvJl3F0LK3P6KDjEGlRh1CgzQmzafwBJjmsRx9jSwckGP6jiEEDtw==",
       "license": "MIT",
       "license": "MIT",
       "dependencies": {
       "dependencies": {
-        "@simplewebauthn/browser": "^13.1.2",
-        "@simplewebauthn/server": "^13.1.2",
-        "zod": "^4.3.5"
+        "@simplewebauthn/browser": "^13.2.2",
+        "@simplewebauthn/server": "^13.2.3",
+        "zod": "^4.3.6"
       },
       },
       "peerDependencies": {
       "peerDependencies": {
-        "@better-auth/core": "1.4.19",
-        "@better-auth/utils": "0.3.0",
+        "@better-auth/core": "1.5.6",
+        "@better-auth/utils": "0.3.1",
         "@better-fetch/fetch": "1.1.21",
         "@better-fetch/fetch": "1.1.21",
-        "better-auth": "1.4.19",
-        "better-call": "1.1.8",
+        "better-auth": "1.5.6",
+        "better-call": "1.3.2",
         "nanostores": "^1.0.1"
         "nanostores": "^1.0.1"
       }
       }
     },
     },
-    "node_modules/@better-auth/telemetry": {
-      "version": "1.4.19",
-      "resolved": "https://registry.npmjs.org/@better-auth/telemetry/-/telemetry-1.4.19.tgz",
-      "integrity": "sha512-ApGNS7olCTtDpKF8Ow3Z+jvFAirOj7c4RyFUpu8axklh3mH57ndpfUAUjhgA8UVoaaH/mnm/Tl884BlqiewLyw==",
-      "dependencies": {
-        "@better-auth/utils": "0.3.0",
-        "@better-fetch/fetch": "1.1.21"
-      },
-      "peerDependencies": {
-        "@better-auth/core": "1.4.19"
-      }
-    },
     "node_modules/@better-auth/utils": {
     "node_modules/@better-auth/utils": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/@better-auth/utils/-/utils-0.3.0.tgz",
-      "integrity": "sha512-W+Adw6ZA6mgvnSnhOki270rwJ42t4XzSK6YWGF//BbVXL6SwCLWfyzBc1lN2m/4RM28KubdBKQ4X5VMoLRNPQw==",
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/@better-auth/utils/-/utils-0.3.1.tgz",
+      "integrity": "sha512-+CGp4UmZSUrHHnpHhLPYu6cV+wSUSvVbZbNykxhUDocpVNTo9uFFxw/NqJlh1iC4wQ9HKKWGCKuZ5wUgS0v6Kg==",
       "license": "MIT"
       "license": "MIT"
     },
     },
     "node_modules/@better-fetch/fetch": {
     "node_modules/@better-fetch/fetch": {
@@ -8785,23 +8782,28 @@
       }
       }
     },
     },
     "node_modules/better-auth": {
     "node_modules/better-auth": {
-      "version": "1.4.19",
-      "resolved": "https://registry.npmjs.org/better-auth/-/better-auth-1.4.19.tgz",
-      "integrity": "sha512-3RlZJcA0+NH25wYD85vpIGwW9oSTuEmLIaGbT8zg41w/Pa2hVWHKedjoUHHJtnzkBXzDb+CShkLnSw7IThDdqQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@better-auth/core": "1.4.19",
-        "@better-auth/telemetry": "1.4.19",
-        "@better-auth/utils": "0.3.0",
+      "version": "1.5.6",
+      "resolved": "https://registry.npmjs.org/better-auth/-/better-auth-1.5.6.tgz",
+      "integrity": "sha512-QSpJTqaT1XVfWRQe/fm3PgeuwOIlz1nWX/Dx7nsHStJ382bLzmDbQk2u7IT0IJ6wS5SRxfqEE1Ev9TXontgyAQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@better-auth/core": "1.5.6",
+        "@better-auth/drizzle-adapter": "1.5.6",
+        "@better-auth/kysely-adapter": "1.5.6",
+        "@better-auth/memory-adapter": "1.5.6",
+        "@better-auth/mongo-adapter": "1.5.6",
+        "@better-auth/prisma-adapter": "1.5.6",
+        "@better-auth/telemetry": "1.5.6",
+        "@better-auth/utils": "0.3.1",
         "@better-fetch/fetch": "1.1.21",
         "@better-fetch/fetch": "1.1.21",
-        "@noble/ciphers": "^2.0.0",
-        "@noble/hashes": "^2.0.0",
-        "better-call": "1.1.8",
+        "@noble/ciphers": "^2.1.1",
+        "@noble/hashes": "^2.0.1",
+        "better-call": "1.3.2",
         "defu": "^6.1.4",
         "defu": "^6.1.4",
-        "jose": "^6.1.0",
-        "kysely": "^0.28.5",
-        "nanostores": "^1.0.1",
-        "zod": "^4.3.5"
+        "jose": "^6.1.3",
+        "kysely": "^0.28.12",
+        "nanostores": "^1.1.1",
+        "zod": "^4.3.6"
       },
       },
       "peerDependencies": {
       "peerDependencies": {
         "@lynx-js/react": "*",
         "@lynx-js/react": "*",
@@ -8884,6 +8886,97 @@
         }
         }
       }
       }
     },
     },
+    "node_modules/better-auth/node_modules/@better-auth/drizzle-adapter": {
+      "version": "1.5.6",
+      "resolved": "https://registry.npmjs.org/@better-auth/drizzle-adapter/-/drizzle-adapter-1.5.6.tgz",
+      "integrity": "sha512-VfFFmaoFw3ug12SiSuIwzrMoHyIVmkMGWm9gZ4sXdYYVX4HboCL4m3fjzOhppcmK5OGatRuU+N1UX6wxCITcXw==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@better-auth/core": "1.5.6",
+        "@better-auth/utils": "^0.3.0",
+        "drizzle-orm": ">=0.41.0"
+      },
+      "peerDependenciesMeta": {
+        "drizzle-orm": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/better-auth/node_modules/@better-auth/kysely-adapter": {
+      "version": "1.5.6",
+      "resolved": "https://registry.npmjs.org/@better-auth/kysely-adapter/-/kysely-adapter-1.5.6.tgz",
+      "integrity": "sha512-Fnf+h8WVKtw6lEOmVmiVVzDf3shJtM60AYf9XTnbdCeUd6MxN/KnaJZpkgtYnRs7a+nwtkVB+fg4lGETebGFXQ==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@better-auth/core": "1.5.6",
+        "@better-auth/utils": "^0.3.0",
+        "kysely": "^0.27.0 || ^0.28.0"
+      },
+      "peerDependenciesMeta": {
+        "kysely": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/better-auth/node_modules/@better-auth/memory-adapter": {
+      "version": "1.5.6",
+      "resolved": "https://registry.npmjs.org/@better-auth/memory-adapter/-/memory-adapter-1.5.6.tgz",
+      "integrity": "sha512-rS7ZsrIl5uvloUgNN0u9LOZJMMXnsZXVdUZ3MrTBKWM2KpoJjzPr9yN3Szyma5+0V7SltnzSGHPkYj2bEzzmlA==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@better-auth/core": "1.5.6",
+        "@better-auth/utils": "^0.3.0"
+      }
+    },
+    "node_modules/better-auth/node_modules/@better-auth/mongo-adapter": {
+      "version": "1.5.6",
+      "resolved": "https://registry.npmjs.org/@better-auth/mongo-adapter/-/mongo-adapter-1.5.6.tgz",
+      "integrity": "sha512-6+M3MS2mor8fTUV3EI1FBLP0cs6QfbN+Ovx9+XxR/GdfKIBoNFzmPEPRbdGt+ft6PvrITsUm+T70+kkHgVSP6w==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@better-auth/core": "1.5.6",
+        "@better-auth/utils": "^0.3.0",
+        "mongodb": "^6.0.0 || ^7.0.0"
+      },
+      "peerDependenciesMeta": {
+        "mongodb": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/better-auth/node_modules/@better-auth/prisma-adapter": {
+      "version": "1.5.6",
+      "resolved": "https://registry.npmjs.org/@better-auth/prisma-adapter/-/prisma-adapter-1.5.6.tgz",
+      "integrity": "sha512-UxY9vQJs1Tt+O+T2YQnseDMlWmUSQvFZSBb5YiFRg7zcm+TEzujh4iX2/csA0YiZptLheovIuVWTP9nriewEBA==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@better-auth/core": "1.5.6",
+        "@better-auth/utils": "^0.3.0",
+        "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0",
+        "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@prisma/client": {
+          "optional": true
+        },
+        "prisma": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/better-auth/node_modules/@better-auth/telemetry": {
+      "version": "1.5.6",
+      "resolved": "https://registry.npmjs.org/@better-auth/telemetry/-/telemetry-1.5.6.tgz",
+      "integrity": "sha512-yXC7NSxnIFlxDkGdpD7KA+J9nqIQAPCJKe77GoaC5bWoe/DALo1MYorZfTgOafS7wrslNtsPT4feV/LJi1ubqQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@better-auth/utils": "0.3.1",
+        "@better-fetch/fetch": "1.1.21"
+      },
+      "peerDependencies": {
+        "@better-auth/core": "1.5.6"
+      }
+    },
     "node_modules/better-auth/node_modules/@noble/ciphers": {
     "node_modules/better-auth/node_modules/@noble/ciphers": {
       "version": "2.1.1",
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-2.1.1.tgz",
       "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-2.1.1.tgz",
@@ -8909,15 +9002,15 @@
       }
       }
     },
     },
     "node_modules/better-call": {
     "node_modules/better-call": {
-      "version": "1.1.8",
-      "resolved": "https://registry.npmjs.org/better-call/-/better-call-1.1.8.tgz",
-      "integrity": "sha512-XMQ2rs6FNXasGNfMjzbyroSwKwYbZ/T3IxruSS6U2MJRsSYh3wYtG3o6H00ZlKZ/C/UPOAD97tqgQJNsxyeTXw==",
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/better-call/-/better-call-1.3.2.tgz",
+      "integrity": "sha512-4cZIfrerDsNTn3cm+MhLbUePN0gdwkhSXEuG7r/zuQ8c/H7iU0/jSK5TD3FW7U0MgKHce/8jGpPYNO4Ve+4NBw==",
       "license": "MIT",
       "license": "MIT",
       "dependencies": {
       "dependencies": {
-        "@better-auth/utils": "^0.3.0",
-        "@better-fetch/fetch": "^1.1.4",
-        "rou3": "^0.7.10",
-        "set-cookie-parser": "^2.7.1"
+        "@better-auth/utils": "^0.3.1",
+        "@better-fetch/fetch": "^1.1.21",
+        "rou3": "^0.7.12",
+        "set-cookie-parser": "^3.0.1"
       },
       },
       "peerDependencies": {
       "peerDependencies": {
         "zod": "^4.0.0"
         "zod": "^4.0.0"
@@ -10153,9 +10246,9 @@
       }
       }
     },
     },
     "node_modules/defu": {
     "node_modules/defu": {
-      "version": "6.1.4",
-      "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
-      "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
+      "version": "6.1.6",
+      "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.6.tgz",
+      "integrity": "sha512-f8mefEW4WIVg4LckePx3mALjQSPQgFlg9U8yaPdlsbdYcHQyj9n2zL2LJEA52smeYxOvmd/nB7TpMtHGMTHcug==",
       "license": "MIT"
       "license": "MIT"
     },
     },
     "node_modules/delayed-stream": {
     "node_modules/delayed-stream": {
@@ -10272,7 +10365,6 @@
       "version": "17.2.4",
       "version": "17.2.4",
       "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz",
       "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz",
       "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==",
       "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==",
-      "dev": true,
       "license": "BSD-2-Clause",
       "license": "BSD-2-Clause",
       "engines": {
       "engines": {
         "node": ">=12"
         "node": ">=12"
@@ -12734,9 +12826,9 @@
       }
       }
     },
     },
     "node_modules/lodash": {
     "node_modules/lodash": {
-      "version": "4.17.23",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
-      "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
+      "version": "4.18.1",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz",
+      "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==",
       "license": "MIT"
       "license": "MIT"
     },
     },
     "node_modules/log-symbols": {
     "node_modules/log-symbols": {
@@ -14082,9 +14174,9 @@
       }
       }
     },
     },
     "node_modules/nanostores": {
     "node_modules/nanostores": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-1.1.0.tgz",
-      "integrity": "sha512-yJBmDJr18xy47dbNVlHcgdPrulSn1nhSE6Ns9vTG+Nx9VPT6iV1MD6aQFp/t52zpf82FhLLTXAXr30NuCnxvwA==",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-1.2.0.tgz",
+      "integrity": "sha512-F0wCzbsH80G7XXo0Jd9/AVQC7ouWY6idUCTnMwW5t/Rv9W8qmO6endavDwg7TNp5GbugwSukFMVZqzPSrSMndg==",
       "funding": [
       "funding": [
         {
         {
           "type": "github",
           "type": "github",
@@ -16779,9 +16871,9 @@
       "license": "ISC"
       "license": "ISC"
     },
     },
     "node_modules/set-cookie-parser": {
     "node_modules/set-cookie-parser": {
-      "version": "2.7.2",
-      "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz",
-      "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-3.1.0.tgz",
+      "integrity": "sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==",
       "license": "MIT"
       "license": "MIT"
     },
     },
     "node_modules/setimmediate": {
     "node_modules/setimmediate": {

+ 3 - 3
package.json

@@ -18,7 +18,7 @@
   },
   },
   "dependencies": {
   "dependencies": {
     "@aws-sdk/client-ses": "^3.1011.0",
     "@aws-sdk/client-ses": "^3.1011.0",
-    "@better-auth/passkey": "^1.4.19",
+    "@better-auth/passkey": "^1.5.6",
     "@dnd-kit/core": "^6.3.1",
     "@dnd-kit/core": "^6.3.1",
     "@dnd-kit/sortable": "^10.0.0",
     "@dnd-kit/sortable": "^10.0.0",
     "@dnd-kit/utilities": "^3.2.2",
     "@dnd-kit/utilities": "^3.2.2",
@@ -35,7 +35,7 @@
     "@tiptap/starter-kit": "^3.19.0",
     "@tiptap/starter-kit": "^3.19.0",
     "@types/qrcode": "^1.5.6",
     "@types/qrcode": "^1.5.6",
     "archiver": "^7.0.1",
     "archiver": "^7.0.1",
-    "better-auth": "^1.4.18",
+    "better-auth": "^1.5.6",
     "bson": "^7.2.0",
     "bson": "^7.2.0",
     "class-variance-authority": "^0.7.1",
     "class-variance-authority": "^0.7.1",
     "clsx": "^2.1.1",
     "clsx": "^2.1.1",
@@ -103,4 +103,4 @@
     "fast-xml-parser": ">=5.3.6",
     "fast-xml-parser": ">=5.3.6",
     "qs": ">=6.14.2"
     "qs": ">=6.14.2"
   }
   }
-}
+}

+ 4 - 1
src/app/(public)/auth/sign-in/sign-in-form.tsx

@@ -54,7 +54,10 @@ function SignInFormInner({ registrationDisabled }: { registrationDisabled: boole
     try {
     try {
       const result = await authClient.signIn.passkey()
       const result = await authClient.signIn.passkey()
       if (result?.error) {
       if (result?.error) {
-        setError(result.error.message || t('errors.passkeyFailed'))
+        // User dismissed the passkey prompt — not an error state
+        if ('code' in result.error && result.error.code === 'AUTH_CANCELLED') return
+        const msg = typeof result.error.message === 'string' ? result.error.message : ''
+        setError(msg || t('errors.passkeyFailed'))
       } else {
       } else {
         const redirect = searchParams.get('redirect') || '/'
         const redirect = searchParams.get('redirect') || '/'
         router.push(redirect)
         router.push(redirect)

+ 4 - 1
src/features/settings/Components/passkey-settings.tsx

@@ -61,7 +61,10 @@ export function PasskeySettings() {
     try {
     try {
       const result = await authClient.passkey.addPasskey()
       const result = await authClient.passkey.addPasskey()
       if (result?.error) {
       if (result?.error) {
-        toast.error(result.error.message || t('account.passkey.registerFailed'))
+        // User dismissed the passkey prompt — not an error state
+        if ('code' in result.error && result.error.code === 'REGISTRATION_CANCELLED') return
+        const msg = typeof result.error.message === 'string' ? result.error.message : ''
+        toast.error(msg || t('account.passkey.registerFailed'))
       } else {
       } else {
         toast.success(t('account.passkey.registerSuccess'))
         toast.success(t('account.passkey.registerSuccess'))
         fetchPasskeys()
         fetchPasskeys()