Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
54ca0b7
chore(deps): add `otplib` and `qrcode`
boutterudy Apr 24, 2026
8ce618c
feat(database): add 2FA schema and migration
boutterudy Apr 24, 2026
683b956
feat(2FA): add core library functions for TOTP, backup codes and rate…
boutterudy Apr 24, 2026
7c51e1c
feat(2FA): create API routes for users
boutterudy Apr 24, 2026
ab73667
feat(2FA): create API routes for admins
boutterudy Apr 24, 2026
4a7e337
feat(2FA): create hooks to use API
boutterudy Apr 24, 2026
c3808ca
feat(2FA): implement 2FA step in login flow
boutterudy Apr 24, 2026
96bdafa
feat(2FA): create modals (setup/disable/success)
boutterudy Apr 24, 2026
2428f29
feat(translations): add 2FA wording in `en-US`
boutterudy Apr 24, 2026
d800631
feat(translations): add 2FA wording in `fr-FR`
boutterudy Apr 24, 2026
1b78192
feat(2FA): add user security settings page
boutterudy Apr 24, 2026
2359dba
feat(2FA): add admin security settings pages
boutterudy Apr 24, 2026
817dfff
feat(2FA): add 2FA settings for teams
boutterudy Apr 24, 2026
399f47c
feat(2FA): enfore 2FA from App layout
boutterudy Apr 24, 2026
8d822c6
fix(2FA): error codes returned by API
boutterudy Apr 24, 2026
f298396
chore(2FA): use appropriate quotes for props
boutterudy Apr 24, 2026
d17900d
refactor(2FA): use queries in `UserTwoFactorSettings`
boutterudy Apr 25, 2026
22df31e
refactor(2FA): use a query in `TeamTwoFactorSettings`
boutterudy Apr 25, 2026
c127767
fix(2FA): add missing translations
boutterudy Apr 25, 2026
6bd8f48
fix(2FA): add missing error code
boutterudy Apr 25, 2026
1eb37f2
chore(2FA): remove useless comment
boutterudy Apr 25, 2026
d77ba4f
refactor(2FA): use `onSuccess` and `onError` instead of `.then().catc…
boutterudy Apr 25, 2026
0795833
fix(2FA): add missing translation for backup codes file
boutterudy Apr 25, 2026
b86d48d
refactor(2FA): use CSS module instead of inline `style`
boutterudy Apr 25, 2026
6c67652
chore(2FA): get rid of empty `onOpenChange`
boutterudy Apr 25, 2026
a9a873c
fix(2FA): increase backup codes length for improved security
boutterudy Apr 25, 2026
cbd3aa2
chore(2FA): rename property to match usage
boutterudy Apr 25, 2026
d14869e
chore: revert unnecessary changes
boutterudy Apr 25, 2026
1ffe01f
fix(2FA): add missing translation
boutterudy Apr 25, 2026
5def756
fix(2FA): update query keys
boutterudy Apr 25, 2026
1068a82
chore: `pnpm run format`
boutterudy Apr 25, 2026
df913fd
chore: remove unnecessary function
boutterudy Apr 25, 2026
5c5d1c3
fix(2FA): use serializable transaction for failed attempts recording
boutterudy Apr 25, 2026
fc8d34f
fix(2FA): cascade delete on 2FA tables linked to the user
boutterudy Apr 25, 2026
fc32e39
fix(2FA): return `429` when too many failed attemps
boutterudy Apr 25, 2026
3f8b3e8
fix(2FA): cast transaction return to match return type
boutterudy Apr 25, 2026
c39a464
fix(2FA): put backup code generation in transaction
boutterudy Apr 25, 2026
c808640
chore: add comment about `manualKey`
boutterudy Apr 25, 2026
ebcc61c
fix(2FA): add `hex` key validation for `TWO_FACTOR_ENCRYPTION_KEY`
boutterudy Apr 25, 2026
b4bb9cc
fix(2FA): put disable 2FA cleanup in transaction
boutterudy Apr 25, 2026
3e165a8
fix(2FA): backup code double-use race condition
boutterudy Apr 25, 2026
4b15f2a
fix(2FA): error when trying to setup an already activated 2FA
boutterudy Apr 25, 2026
330c223
fix(2FA): mark OTP used in transaction
boutterudy Apr 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,12 @@
"next-intl": "4.9.1",
"node-fetch": "^3.2.8",
"npm-run-all": "^4.1.5",
"otplib": "^13.4.0",
"papaparse": "^5.5.3",
"pg": "^8.20.0",
"prisma": "^7.7.0",
"pure-rand": "^8.4.0",
"qrcode": "^1.5.4",
"react": "^19.2.5",
"react-dom": "^19.2.5",
"react-error-boundary": "^6.1.1",
Expand Down Expand Up @@ -128,6 +130,7 @@
"@rollup/plugin-typescript": "^12.3.0",
"@types/jest": "^30.0.0",
"@types/node": "^25.6.0",
"@types/qrcode": "^1.5.6",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.2",
"babel-plugin-react-compiler": "19.1.0-rc.2",
Expand Down
Loading