feat: Implement email change functionality

This commit introduces the following changes:

-   Added new API endpoints for email change requests and
    verification.
-   Updated the backend code to support email change workflow,
    including validation, code generation, and email sending.
-   Updated the frontend to include components for initiating and
    verifying email changes.
-   Added new dependencies to support email change functionality.
-   Updated the existing components to include email change
    functionality.

https://codeberg.org/mapleopentech/monorepo/issues/1
This commit is contained in:
Bartlomiej Mika 2025-12-05 15:29:26 -05:00
parent 480a2b557d
commit 598a7d3fad
19 changed files with 1213 additions and 65 deletions

View file

@ -6,6 +6,8 @@ import (
"codeberg.org/mapleopentech/monorepo/cloud/maplefile-backend/config"
uc_user "codeberg.org/mapleopentech/monorepo/cloud/maplefile-backend/internal/usecase/user"
svc_user "codeberg.org/mapleopentech/monorepo/cloud/maplefile-backend/internal/service/user"
"codeberg.org/mapleopentech/monorepo/cloud/maplefile-backend/pkg/auditlog"
"codeberg.org/mapleopentech/monorepo/cloud/maplefile-backend/pkg/emailer/mailgun"
)
// Wire providers for me services
@ -50,3 +52,26 @@ func ProvideVerifyProfileService(
) VerifyProfileService {
return NewVerifyProfileService(cfg, logger, userGetByIDUseCase, userUpdateUseCase)
}
func ProvideChangeEmailRequestService(
cfg *config.Configuration,
logger *zap.Logger,
auditLogger auditlog.AuditLogger,
userGetByIDUseCase uc_user.UserGetByIDUseCase,
userGetByEmailUseCase uc_user.UserGetByEmailUseCase,
userUpdateUseCase uc_user.UserUpdateUseCase,
emailer mailgun.Emailer,
) ChangeEmailRequestService {
return NewChangeEmailRequestService(cfg, logger, auditLogger, userGetByIDUseCase, userGetByEmailUseCase, userUpdateUseCase, emailer)
}
func ProvideChangeEmailVerifyService(
cfg *config.Configuration,
logger *zap.Logger,
auditLogger auditlog.AuditLogger,
userGetByIDUseCase uc_user.UserGetByIDUseCase,
userUpdateUseCase uc_user.UserUpdateUseCase,
emailer mailgun.Emailer,
) ChangeEmailVerifyService {
return NewChangeEmailVerifyService(cfg, logger, auditLogger, userGetByIDUseCase, userUpdateUseCase, emailer)
}