Files
RenewCMS/internal/infrastructure/useCases/CancelEmailChange.go
T

35 lines
913 B
Go

package useCases
import (
"RenewCMS/internal/domain/audit"
"RenewCMS/internal/domain/user"
"context"
)
type CancelEmailChangeUseCase struct {
userRepository user.Repository
recorder audit.Recorder
}
func NewCancelEmailChangeUseCase(userRepository user.Repository, recorder audit.Recorder) *CancelEmailChangeUseCase {
return &CancelEmailChangeUseCase{userRepository, recorder}
}
func (u *CancelEmailChangeUseCase) CancelEmailChange(ctx context.Context, userId uint32) error {
account, err := u.userRepository.Get(userId)
if err != nil {
return err
}
if account.PendingEmail == "" {
return nil
}
event := audit.NewEvent(audit.ActionUserCancelEmail, audit.CategoryUsers)
event.Target = userTarget(account)
if _, err := u.userRepository.ClearPendingEmailChange(userId); err != nil {
recordFailure(ctx, u.recorder, event, err)
return err
}
u.recorder.Record(ctx, event)
return nil
}