Simo
|
e668fa85ec
|
Add 2FA, email + password reset, and batch-7 pages
Auth (hand-built on the auth core):
- 2FA: User model gains two_factor_secret/recovery_codes/confirmed_at (+ idempotent
MariaDB migration). authorize() requires a valid TOTP code when 2FA is confirmed
(secret decrypted via Laravel APP_KEY, fail-closed). Two-step login (precheckLogin
reveals the code field). /settings/2fa enable/confirm/disable flow.
- Password reset: nodemailer email service; PasswordReset model + migration;
/forgot (request, generic response) + /reset (token sha256 + 1h TTL, sets argon2id
hash). Login links to forgot.
Batch 7 (parallel agents): /admin/commandocentrum (RCON controls + emulator_errors),
social write actions (friend request + guild forum new thread), /help/[category],
/badges (public). env: APP_KEY, APP_URL, SMTP_*. Nav extended.
Verified: tsc exit 0, vitest 48/48, next build exit 0 (64 page routes).
|
2026-06-28 14:25:19 +02:00 |
|
Simo
|
b5bc7f6daf
|
Rebuild atomcms-next foundation on Prisma (align to habbo-next reference)
Replace the superseded Drizzle monorepo scaffold with a single-app Prisma 7
data layer, mirroring the proven habbo-next approach to the shared Arcturus
emulator DB (introspect/conform only, idempotent SQL migrations via a custom
runner; never migrate-diff).
- prisma/schema.prisma: User, UsersCurrency (composite PK), Ban, WebsiteSetting
mapped to AtomCMS's default.sql columns; client generated to src/generated/prisma
- src/lib/prisma.ts: PrismaMariaDb adapter singleton; src/env.ts zod env
- src/lib/services: siteSettings (cached setting() equivalent) + CurrencyType enum
- prisma/migrations + scripts/apply-migrations.ts: idempotent CMS-table runner
Verified: prisma generate OK, tsc --noEmit exit 0, vitest 6/6 pass.
|
2026-06-27 15:26:40 +02:00 |
|