Improve email verification flow and error handling

- Send verification email before creating user to prevent orphaned accounts
- Detect SMTP authentication errors and fail fast without retries
- Add field-level validation errors for better frontend UX
- Configure docker-compose with explicit environment variables
- Document dollar sign escaping in .env.example (use $$)
- Implement welcome email on successful verification
- Clean up unnecessary comments
This commit is contained in:
2025-11-28 11:32:51 +01:00
parent 00f6b51228
commit f37c1ac19b
24 changed files with 850 additions and 78 deletions
@@ -0,0 +1,39 @@
package commands
import (
"context"
"apocapoc-api/internal/domain/repositories"
"apocapoc-api/internal/shared/errors"
)
type DeleteUserCommand struct {
UserID string
}
type DeleteUserHandler struct {
userRepo repositories.UserRepository
}
func NewDeleteUserHandler(userRepo repositories.UserRepository) *DeleteUserHandler {
return &DeleteUserHandler{
userRepo: userRepo,
}
}
func (h *DeleteUserHandler) Handle(ctx context.Context, cmd DeleteUserCommand) error {
if cmd.UserID == "" {
return errors.ErrInvalidInput
}
user, err := h.userRepo.FindByID(ctx, cmd.UserID)
if err != nil {
return errors.ErrNotFound
}
if err := h.userRepo.Delete(ctx, user.ID); err != nil {
return err
}
return nil
}