mirror of
https://github.com/btouchard/ackify.git
synced 2026-05-07 23:51:00 -05:00
feat: configurable rate limiting and comprehensive E2E test suite
Rate Limiting Configuration: - Add ACKIFY_AUTH_MAGICLINK_RATE_LIMIT_EMAIL (default: 3/hour) - Add ACKIFY_AUTH_MAGICLINK_RATE_LIMIT_IP (default: 10/hour) - Add ACKIFY_AUTH_RATE_LIMIT (default: 5/min) - Add ACKIFY_DOCUMENT_RATE_LIMIT (default: 10/min) - Add ACKIFY_GENERAL_RATE_LIMIT (default: 100/min) E2E Test Suite: - 01-signature-workflow: Complete signature flow validation - 02-signature-uniqueness: Constraint enforcement and duplicate prevention - 03-admin-signers-management: Expected signers CRUD operations - 04-admin-email-reminders: SMTP reminder functionality - 05-document-creation-by-url: URL-based document initialization - 06-my-signatures-page: User signature list and navigation - 07-admin-document-deletion: Cascade deletion verification - 08-admin-route-protection: Access control validation - 09-complete-workflow: End-to-end multi-user scenario - 10-unexpected-signatures: Handling of non-expected signers
This commit is contained in:
@@ -115,10 +115,12 @@ func NewServer(ctx context.Context, cfg *config.Config, frontend embed.FS, versi
|
||||
}
|
||||
|
||||
magicLinkService := services.NewMagicLinkService(services.MagicLinkServiceConfig{
|
||||
Repository: magicLinkRepo,
|
||||
EmailSender: emailSender,
|
||||
BaseURL: cfg.App.BaseURL,
|
||||
AppName: cfg.App.Organisation,
|
||||
Repository: magicLinkRepo,
|
||||
EmailSender: emailSender,
|
||||
BaseURL: cfg.App.BaseURL,
|
||||
AppName: cfg.App.Organisation,
|
||||
RateLimitPerEmail: cfg.Auth.MagicLinkRateLimitEmail,
|
||||
RateLimitPerIP: cfg.Auth.MagicLinkRateLimitIP,
|
||||
})
|
||||
|
||||
// Initialize Magic Link cleanup worker
|
||||
@@ -178,6 +180,9 @@ func NewServer(ctx context.Context, cfg *config.Config, frontend embed.FS, versi
|
||||
OAuthEnabled: cfg.Auth.OAuthEnabled,
|
||||
MagicLinkEnabled: cfg.Auth.MagicLinkEnabled,
|
||||
OnlyAdminCanCreate: cfg.App.OnlyAdminCanCreate,
|
||||
AuthRateLimit: cfg.App.AuthRateLimit,
|
||||
DocumentRateLimit: cfg.App.DocumentRateLimit,
|
||||
GeneralRateLimit: cfg.App.GeneralRateLimit,
|
||||
}
|
||||
apiRouter := api.NewRouter(apiConfig)
|
||||
router.Mount("/api/v1", apiRouter)
|
||||
|
||||
Reference in New Issue
Block a user