示例#1
0
        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);
        }