• Vy Nguyễn Minh Khang's avatar
    feat(oidc): email-verified register flow + resend endpoint · 4c54ba96
    Vy Nguyễn Minh Khang authored
    Wire the OIDC /interaction/:uid/register handler end-to-end so a brand-
    new account is created in 'pending_verification' status, a single-use
    token is persisted (SHA-256 hashed) in email_verify_tokens, and a
    verify-pending screen is rendered instead of the previous 501 stub.
    Auto-login is intentionally skipped: the user must click the link in
    the verification email before sign-in is allowed.
    
    Highlights:
    - EmailVerificationService: mints tokens, persists hashes, queues mail
      via MailService; dev mode returns the raw verify URL so the flow
      is testable without a working SMTP transport.
    - New POST /:uid/resend-verification: re-issues a fresh token; the
      response is identical for known and unknown emails to avoid leaking
      account existence.
    - Default 'user' role is assigned inside the same transaction as
      User + UserAuth creation; missing role is non-fatal.
    - New view verify-pending.hbs with resend + back-to-sign-in actions.
    - register.hbs upgraded to a 2-column responsive grid covering all
      OIDC profile fields (name, phone, gender, address, DOB) plus a
      required terms_accepted checkbox.
    - 8 unit tests in tests/unit/services/emailVerification.service.test.ts
      (buildVerificationUrl, createToken hash, verifyToken outcomes,
      resendVerificationEmail guard) - all passing.
    - RUN.md gained section 6.5 'Email Verification Flow' with REST/OIDC
      step-by-step, dev mode fallback, curl examples, env vars and a
      manual test checklist.
    - PROGRESS.md updated to log Phase 3 re-apply + Phase 4 + Phase 5,
      pre-existing TS errors out of scope, and rollback cheatsheet.
    
    Phase 4b (fix pre-existing TS errors in
    src/controllers/api/v1/auth/{verify-email,resend-verification}.ts and
    src/server.ts) is documented but deliberately out of scope for this
    commit to keep the blast radius small.
    
    Refs: pending_verification, email_verified_at columns,
    email_verify_tokens table (migration 040)
    Co-authored-by: 's avatarCursor <cursoragent@cursor.com>
    4c54ba96
Name
Last commit
Last update
..
ActiveApartment.ts Loading commit data...
ActiveBed.ts Loading commit data...
ActiveBuilding.ts Loading commit data...
ActiveResident.ts Loading commit data...
ActiveResidentStay.ts Loading commit data...
ActiveRoom.ts Loading commit data...
ActiveUser.ts Loading commit data...
Apartment.ts Loading commit data...
AuditDeadLetter.ts Loading commit data...
AuditOutbox.ts Loading commit data...
AuthAuditLog.ts Loading commit data...
AuthAuditLogsDefault.ts Loading commit data...
Bed.ts Loading commit data...
Bill.ts Loading commit data...
BillItem.ts Loading commit data...
Building.ts Loading commit data...
Contract.ts Loading commit data...
ContractFile.ts Loading commit data...
ContractType.ts Loading commit data...
DebtReminderPolicy.ts Loading commit data...
DebtReminderPolicyTarget.ts Loading commit data...
EmailVerifyToken.ts Loading commit data...
EntityChangeLog.ts Loading commit data...
EntityChangeLogsDefault.ts Loading commit data...
File.ts Loading commit data...
FileVariant.ts Loading commit data...
Incident.ts Loading commit data...
IncidentFile.ts Loading commit data...
IncidentType.ts Loading commit data...
NotificationDeliveryAttempt.ts Loading commit data...
NotificationDevice.ts Loading commit data...
NotificationMessage.ts Loading commit data...
NotificationPreference.ts Loading commit data...
NotificationReceipt.ts Loading commit data...
NotificationTemplate.ts Loading commit data...
PasswordResetToken.ts Loading commit data...
Permission.ts Loading commit data...
Post.ts Loading commit data...
PostTarget.ts Loading commit data...
RefreshTokenAuditLog.ts Loading commit data...
RefreshTokenAuditLogsDefault.ts Loading commit data...
Resident.ts Loading commit data...
ResidentCurrentLocation.ts Loading commit data...
ResidentDocument.ts Loading commit data...
ResidentEvent.ts Loading commit data...
ResidentStay.ts Loading commit data...
Role.ts Loading commit data...
RolePermission.ts Loading commit data...
Room.ts Loading commit data...
SchemaMigration.ts Loading commit data...
SystemAuditLog.ts Loading commit data...
SystemAuditLogsDefault.ts Loading commit data...
SystemConfig.ts Loading commit data...
Technician.ts Loading commit data...
User.ts Loading commit data...
UserAuth.ts Loading commit data...
UserPasswordHistory.ts Loading commit data...
UserRole.ts Loading commit data...
UserRoleDetail.ts Loading commit data...
UserSession.ts Loading commit data...
UserSessionsDetailed.ts Loading commit data...
WebhookLog.ts Loading commit data...
init-models.ts Loading commit data...