예제 #1
0
        public async Task SendInvitationByEmailConfirmationToken(string userId)
        {
            var emailTokenLifespan = Double.Parse(_configuration["TokenProviders:EmailConfirmTokenProvider:TokenLifespan"]);

            using (var uow = _uowProvider.CreateUnitOfWork())
            {
                var repository = uow.GetRepository <ApplicationUser>();
                // get user and update emailConfirm data
                var entity = await repository.GetAsync(userId);

                entity.EmailConfirmInvitationDate = DateTimeOffset.UtcNow;
                entity.EmailConfirmTokenLifespan  = emailTokenLifespan;
                repository.Update(entity);
                uow.SaveChanges();

                // send invitation using email confirm token
                var confirmationToken = await GetEmailConfirmationToken(entity.Email);

                string codeHtmlVersion = HttpUtility.UrlEncode(confirmationToken);
                var    confirmationUrl = $@"http://localhost:5050/Account/RegisterByEmail/?userId={ entity.Id }&code={ codeHtmlVersion }";
                await _emailSenderService.SendAccountConfirmationEmailAsync(null, entity.Email, "Confirm your account", confirmationUrl);
            }
        }