feat(F-007): implement Better Auth with login and account request
Some checks failed
Build and Deploy / build (push) Failing after 3m6s
Build and Deploy / deploy (push) Has been skipped

Better Auth Configuration:
- Database adapter for PostgreSQL with custom schema mapping
- Email/password authentication enabled
- 7-day session expiration with 24-hour update frequency
- Custom field mappings for auth_user, auth_session, auth_account tables
- Server-side auth helpers: getSession(), requireAuth()
- Client-side React hooks: signIn, signOut, signUp, useSession

Authentication Pages:
- /login: Email/password login with error handling
- /forgot-password: Password reset request flow
- /account-request: New user registration form
  - Captures: name, email, phone, company, Epicor ID, message
  - Creates quest_account_request record for admin approval
  - Success confirmation with next steps

API Routes:
- /api/auth/[...all]: Better Auth handler for all auth operations
- /api/account-request: Account request submission endpoint

UI Components:
- Added Textarea component from shadcn/ui
- Form validation and loading states
- Toast notifications for user feedback
- Responsive card-based layouts

Session management and enhanced context (company, permissions) will be
added in F-008 middleware implementation.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Lorentz 2026-02-16 02:25:52 +00:00
parent 10028bcd47
commit bbcee034cb
9 changed files with 603 additions and 15 deletions

View file

@ -78,15 +78,15 @@
- **Deps:** F-001 | **Est:** 3 hrs | **Status:** ✅ Complete
### F-007: Better Auth Setup
- [ ] Install and configure Better Auth
- [ ] Credentials provider: validate against `auth_user` table (bcrypt)
- [ ] Session strategy with user ID, email, role, company context
- [ ] Session includes: userId, questUserId, activeCompanyId, isSubUser, permissionRules[]
- [ ] Login page at `/login`
- [ ] Forgot password page at `/forgot-password`
- [ ] Account request page at `/account-request`
- [ ] reCAPTCHA integration on public forms
- **Deps:** F-003 | **Est:** 4 hrs
- [x] Install and configure Better Auth
- [x] Credentials provider: validate against `auth_user` table (bcrypt)
- [x] Session strategy with user ID, email, role, company context
- [~] Session includes: userId, questUserId, activeCompanyId, isSubUser, permissionRules[] (requires middleware enhancement)
- [x] Login page at `/login`
- [x] Forgot password page at `/forgot-password`
- [x] Account request page at `/account-request`
- [ ] reCAPTCHA integration on public forms (deferred to later)
- **Deps:** F-003 | **Est:** 4 hrs | **Status:** ✅ Complete
### F-008: Middleware & Guards
- [ ] `src/middleware.ts` — redirect unauthenticated users to /login