feat(auth): добавить вход по passkey
quality / commitlint (push) Skipped
quality / changes (push) Successful in 8s
quality / docker-check (push) Skipped
quality / web (push) Successful in 1m11s
quality / api (push) Successful in 47s
CD / quality (push) Successful in 2m10s
CD / publish (push) Successful in 1m50s

Альтернатива паролю на портале; SSO приложений без изменений.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Denozordec
2026-08-19 10:24:46 +07:00
co-authored by Cursor
parent f76b89c1df
commit 46dc2f714c
26 changed files with 1820 additions and 72 deletions
+217
View File
@@ -72,6 +72,9 @@ importers:
'@node-rs/argon2':
specifier: ^2.0.2
version: 2.0.2
'@simplewebauthn/server':
specifier: ^13.3.2
version: 13.3.2
fastify:
specifier: ^5.4.0
version: 5.10.0
@@ -127,6 +130,9 @@ importers:
'@hookform/resolvers':
specifier: ^5.4.0
version: 5.4.0([email protected]([email protected]))
'@simplewebauthn/browser':
specifier: ^13.3.0
version: 13.3.0
'@tailwindcss/vite':
specifier: ^4.3.1
version: 4.3.3([email protected](@types/[email protected])([email protected])([email protected])([email protected]))
@@ -1250,6 +1256,9 @@ packages:
'@floating-ui/[email protected]':
resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==}
'@hexagon/[email protected]':
resolution: {integrity: sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==}
'@hookform/[email protected]':
resolution: {integrity: sha512-EIsqr/t/qbinPIhGjMdtvutIN1Kk4uwbROE9/UQ93CAVGR7GkA7Y92+fX80OzXi/OB67jVFYwKGO1WzkxmkFZw==}
peerDependencies:
@@ -1298,6 +1307,9 @@ packages:
'@keyv/[email protected]':
resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==}
'@levischuck/[email protected]':
resolution: {integrity: sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==}
'@lukeed/[email protected]':
resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==}
engines: {node: '>=8'}
@@ -1471,6 +1483,46 @@ packages:
'@oxc-project/[email protected]':
resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==}
'@peculiar/[email protected]':
resolution: {integrity: sha512-hiRJvr5ydif9fbTA7czZw1OfgzYDhu5gXNzhDfS3wSXzWYoSS/BHY+Wu2c36CNbn3mI6FoVLf0yHvQy0D4rZWw==}
'@peculiar/[email protected]':
resolution: {integrity: sha512-N3POfw5RA7efAliAATiudtmvKQqukVEOzrMQuqQY/us2EPKczMy2WiecLt1SX6s3b0OwcFaPUXGF6uIYlBUTbg==}
'@peculiar/[email protected]':
resolution: {integrity: sha512-E9zYmC5mk7eiDKqQAOsZGrJ7mUCIDC0031s4Nsl7dj1Za5EBKcHVqY+1vD/a4xbk480PGqvi455W2b4FeHRJ8Q==}
'@peculiar/[email protected]':
resolution: {integrity: sha512-4xmeZiZ46VI2qGbiZPzdv6p9IhMtjWdbwZf3VCgN8OAVcued60ej5Ki2FF94srVH4Ot/h45Co7T5C/fpQXP4rA==}
'@peculiar/[email protected]':
resolution: {integrity: sha512-Nzwoj+fRr1XB9CQuc4AanUuvQ3OIXAY+ngZIYP+eZUqd+Sonj+ZHTnrg+egQuUJ64/iMi9HFPN04MokGrFTK0w==}
'@peculiar/[email protected]':
resolution: {integrity: sha512-ecGZpkY6Lq5bSgTFU+LS74WjawzDgjWHcjFMVNPH/1C0j53Xi9dmLcPMdmZyk8gdsd2RKeV1fP9EbLB6W6zZ1g==}
'@peculiar/[email protected]':
resolution: {integrity: sha512-yjWVrQEmPp2y9lWjLLE28BRHbt7wYdwWvwXjFgNuekP9mDD/ofz31muVI8qOg2as7XZs1bZIZGPPnJ/0osTClQ==}
'@peculiar/[email protected]':
resolution: {integrity: sha512-t7m3e9p/Gf9YoMM+hLsHUqB+NhOlifiOkENAIG4RV2BFWVGTATVzbXoR8L0EgNWpiriPaeIjBCS5B9PTtkaxQw==}
'@peculiar/[email protected]':
resolution: {integrity: sha512-SOux4+jikCnOwoJvpBp/grOqzFmJPnNSwe3sAg1Bn93YdmCiDtvolZifJIhiRq0UWMTnLRPj9/ZCMAc2W9VsMQ==}
'@peculiar/[email protected]':
resolution: {integrity: sha512-v5Oa6p7hCT3ONqYHQyTFQYcycD06eMhHbr0m7evpvPQSpWJIq8GgbdnvA9bVGTUlOx6KOeDrX7Z0W4s/yboNTg==}
'@peculiar/[email protected]':
resolution: {integrity: sha512-HE+ejy9dX9JP3yLL6CGYoWym4Cted1lGXH7DxsbNDGiq8KabwVR7mzYidwsyNZ/m0hNWjiS+dzSwrsgMB/OIaQ==}
'@peculiar/[email protected]':
resolution: {integrity: sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==}
'@peculiar/[email protected]':
resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==}
engines: {node: '>=20.0.0'}
'@pinojs/[email protected]':
resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==}
@@ -1754,6 +1806,13 @@ packages:
resolution: {integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==}
engines: {node: '>=18'}
'@simplewebauthn/[email protected]':
resolution: {integrity: sha512-BE/UWv6FOToAdVk0EokzkqQQDOWtNydYlY6+OrmiZ5SCNmb41VehttboTetUM3T/fr6EAFYVXjz4My2wg230rQ==}
'@simplewebauthn/[email protected]':
resolution: {integrity: sha512-KEDhfcGP1PAKRVSDjA3npTQFqS2b/srm+ipoNBNHdkzrHAlaRQUTE+a5f4ywsx6thxAw1NU2rYcLEY1949RGbQ==}
engines: {node: '>=20.0.0'}
'@sindresorhus/[email protected]':
resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
engines: {node: '>=10'}
@@ -2258,6 +2317,10 @@ packages:
[email protected]:
resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==}
[email protected]:
resolution: {integrity: sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==}
engines: {node: '>=12.0.0'}
[email protected]:
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
engines: {node: '>=12'}
@@ -4094,6 +4157,13 @@ packages:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
[email protected]:
resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==}
[email protected]:
resolution: {integrity: sha512-BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg==}
engines: {node: '>=16.0.0'}
[email protected]:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
@@ -4171,6 +4241,9 @@ packages:
[email protected]:
resolution: {integrity: sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==}
[email protected]:
resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==}
[email protected]:
resolution: {integrity: sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==}
engines: {node: '>=14'}
@@ -4572,6 +4645,9 @@ packages:
[email protected]:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
[email protected]:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
[email protected]:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
@@ -4599,6 +4675,10 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
[email protected]:
resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==}
engines: {node: '>= 6.0.0'}
[email protected]:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
@@ -5774,6 +5854,8 @@ snapshots:
'@floating-ui/[email protected]': {}
'@hexagon/[email protected]': {}
'@hookform/[email protected]([email protected]([email protected]))':
dependencies:
'@standard-schema/utils': 0.3.0
@@ -5818,6 +5900,8 @@ snapshots:
'@keyv/[email protected]': {}
'@levischuck/[email protected]': {}
'@lukeed/[email protected]': {}
'@markwylde/[email protected]':
@@ -5990,6 +6074,106 @@ snapshots:
'@oxc-project/[email protected]': {}
'@peculiar/[email protected]':
dependencies:
'@peculiar/asn1-schema': 2.9.3
asn1js: 3.0.10
tslib: 2.8.1
'@peculiar/[email protected]':
dependencies:
'@peculiar/asn1-schema': 2.9.3
'@peculiar/asn1-x509': 2.9.3
'@peculiar/asn1-x509-attr': 2.9.3
asn1js: 3.0.10
tslib: 2.8.1
'@peculiar/[email protected]':
dependencies:
'@peculiar/asn1-schema': 2.9.3
'@peculiar/asn1-x509': 2.9.3
asn1js: 3.0.10
tslib: 2.8.1
'@peculiar/[email protected]':
dependencies:
'@peculiar/asn1-schema': 2.9.3
'@peculiar/asn1-x509': 2.9.3
asn1js: 3.0.10
tslib: 2.8.1
'@peculiar/[email protected]':
dependencies:
'@peculiar/asn1-cms': 2.9.3
'@peculiar/asn1-pkcs8': 2.9.3
'@peculiar/asn1-rsa': 2.9.3
'@peculiar/asn1-schema': 2.9.3
asn1js: 3.0.10
tslib: 2.8.1
'@peculiar/[email protected]':
dependencies:
'@peculiar/asn1-schema': 2.9.3
'@peculiar/asn1-x509': 2.9.3
asn1js: 3.0.10
tslib: 2.8.1
'@peculiar/[email protected]':
dependencies:
'@peculiar/asn1-cms': 2.9.3
'@peculiar/asn1-pfx': 2.9.3
'@peculiar/asn1-pkcs8': 2.9.3
'@peculiar/asn1-schema': 2.9.3
'@peculiar/asn1-x509': 2.9.3
'@peculiar/asn1-x509-attr': 2.9.3
asn1js: 3.0.10
tslib: 2.8.1
'@peculiar/[email protected]':
dependencies:
'@peculiar/asn1-schema': 2.9.3
'@peculiar/asn1-x509': 2.9.3
asn1js: 3.0.10
tslib: 2.8.1
'@peculiar/[email protected]':
dependencies:
'@peculiar/utils': 2.0.3
asn1js: 3.0.10
tslib: 2.8.1
'@peculiar/[email protected]':
dependencies:
'@peculiar/asn1-schema': 2.9.3
'@peculiar/asn1-x509': 2.9.3
asn1js: 3.0.10
tslib: 2.8.1
'@peculiar/[email protected]':
dependencies:
'@peculiar/asn1-schema': 2.9.3
'@peculiar/utils': 2.0.3
asn1js: 3.0.10
tslib: 2.8.1
'@peculiar/[email protected]':
dependencies:
tslib: 2.8.1
'@peculiar/[email protected]':
dependencies:
'@peculiar/asn1-cms': 2.9.3
'@peculiar/asn1-csr': 2.9.3
'@peculiar/asn1-ecc': 2.9.3
'@peculiar/asn1-pkcs9': 2.9.3
'@peculiar/asn1-rsa': 2.9.3
'@peculiar/asn1-schema': 2.9.3
'@peculiar/asn1-x509': 2.9.3
pvtsutils: 1.3.6
reflect-metadata: 0.2.2
tslib: 2.8.1
tsyringe: 4.10.0
'@pinojs/[email protected]': {}
'@pnpm/[email protected]': {}
@@ -6229,6 +6413,19 @@ snapshots:
'@simple-libs/[email protected]': {}
'@simplewebauthn/[email protected]': {}
'@simplewebauthn/[email protected]':
dependencies:
'@hexagon/base64': 1.1.28
'@levischuck/tiny-cbor': 0.2.11
'@peculiar/asn1-android': 2.9.3
'@peculiar/asn1-ecc': 2.9.3
'@peculiar/asn1-rsa': 2.9.3
'@peculiar/asn1-schema': 2.9.3
'@peculiar/asn1-x509': 2.9.3
'@peculiar/x509': 1.14.3
'@sindresorhus/[email protected]': {}
'@sindresorhus/[email protected]': {}
@@ -6786,6 +6983,12 @@ snapshots:
minimalistic-assert: 1.0.1
safer-buffer: 2.1.2
[email protected]:
dependencies:
pvtsutils: 1.3.6
pvutils: 1.2.0
tslib: 2.8.1
[email protected]: {}
[email protected]: {}
@@ -8453,6 +8656,12 @@ snapshots:
[email protected]: {}
[email protected]:
dependencies:
tslib: 2.8.1
[email protected]: {}
[email protected]: {}
[email protected]: {}
@@ -8537,6 +8746,8 @@ snapshots:
[email protected]: {}
[email protected]: {}
[email protected]:
dependencies:
'@pnpm/npm-conf': 3.0.3
@@ -8955,6 +9166,8 @@ snapshots:
[email protected]: {}
[email protected]: {}
[email protected]: {}
[email protected]([email protected])([email protected])([email protected])([email protected]):
@@ -8991,6 +9204,10 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
[email protected]:
dependencies:
tslib: 1.14.1
[email protected]:
dependencies:
safe-buffer: 5.2.1