Backend: - Password reset flow (forgot/reset endpoints, tokens table) - Profile management (PUT /users/me, skills, experience, education) - Tickets system (CRUD, messages, stats) - Activity logs (list, stats) - Document validator (CNPJ, CPF, EIN support) - Input sanitizer (XSS prevention) - Full-text search em vagas (plainto_tsquery) - Filtros avançados (location, salary, workMode) - Ordenação (date, salary, relevance) Frontend: - Forgot/Reset password pages - Candidate profile edit page - Sanitize utilities (sanitize.ts) Backoffice: - TicketsModule proxy - ActivityLogsModule proxy - Dockerfile otimizado (multi-stage, non-root, healthcheck) Migrations: - 013: Profile fields to users - 014: Password reset tokens - 015: Tickets table - 016: Activity logs table
30 lines
843 B
Go
30 lines
843 B
Go
package services
|
|
|
|
import (
|
|
"log"
|
|
)
|
|
|
|
// EmailService defines interface for email operations
|
|
type EmailService interface {
|
|
SendEmail(to, subject, body string) error
|
|
}
|
|
|
|
// MockEmailService implements EmailService logging to stdout
|
|
type MockEmailService struct{}
|
|
|
|
func NewMockEmailService() *MockEmailService {
|
|
return &MockEmailService{}
|
|
}
|
|
|
|
func (s *MockEmailService) SendEmail(to, subject, body string) error {
|
|
log.Printf("----------------------------------------------------------------")
|
|
log.Printf("[MOCK EMAIL] To: %s", to)
|
|
log.Printf("[MOCK EMAIL] Subject: %s", subject)
|
|
log.Printf("[MOCK EMAIL] Body:\n%s", body)
|
|
log.Printf("----------------------------------------------------------------")
|
|
// Simulate success
|
|
return nil
|
|
}
|
|
|
|
// In proper implementation, we would have SMTP email service here
|
|
// func NewSMTPEmailService(...) ...
|