public Result ConfirmEmail(string token) { ConfirmationToken tokedDetails = _securityRepository.GetConfirmationTokenDetails(token); if (tokedDetails == null) { _logger.Info($"Token not found '{token}'"); return(new Result(ErrorCodeType.ConfirmationTokenInfoNotFound)); } if (tokedDetails.AlreadyConfirmed) { _logger.Info($"Email was already confirmed '{tokedDetails}'"); return(new Result(ErrorCodeType.MemberHasAlreadyConfirmedEmail)); } if (tokedDetails.IsExpired) { _logger.Info($"Token is expired '{tokedDetails}'"); return(new Result(ErrorCodeType.ConfirmationTokenIsExpired)); } try { _securityRepository.ConfirmEmail(tokedDetails.ForUserId); _logger.Debug($"Email confirmed for userId: '{tokedDetails.ForUserId}'"); } catch (Exception e) { _logger.Error($"Failed to confirm email '{token}'", e); return(new Result(ErrorCodeType.UnknownError)); } return(Result.Success); }