public async Task <Contract.Models.User> SendEmailConfirmMessage(Contract.Models.User user, string baseUrl) { var emailMessage = new MimeMessage(); var token = await GenerateTokenForUser(user.Id); var url = baseUrl + $"/account/confirm?id={user.Id}&code={token}"; emailMessage.From.Add(new MailboxAddress("Администрация сайта", "*****@*****.**")); emailMessage.To.Add(new MailboxAddress(user.FirstName, user.Email)); emailMessage.Subject = "Подтверждение email"; emailMessage.Body = new TextPart(MimeKit.Text.TextFormat.Html) { Text = $"<h1>Здравствуйте, {user.LastName} {user.FirstName}</h1>" + $"<p>Спешим вам сообщить, что вы регистрировались в программе FlexTesting</p>" + $"<p>И теперь вам необходимо подтвердить email. Для это перейдите по <a href=\"{url}\">ссылке</a></p>" + $"<p>{url}</p>" }; using var client = new SmtpClient(); client.ServerCertificateValidationCallback = (s, c, h, e) => true; await client.ConnectAsync("smtp.gmail.com", 465, true); await client.AuthenticateAsync("*****@*****.**", "AdoRtRYtp11^"); await client.SendAsync(emailMessage); await client.DisconnectAsync(true); return(await _userGetOperations.GetById(user.Id)); }
public async Task <Contract.Models.User> Register(NewUserDto newUser) { ValidationHelper.ValidateAndThrow(newUser); var existUser = await _userGetOperations.ByUserName(newUser.Login); if (existUser is not null) { throw new ExistingUserException(); } var model = new Contract.Models.User { Id = Guid.NewGuid().ToString(), Bio = newUser.Bio, FirstName = newUser.FirstName, Login = newUser.Login, LastName = newUser.LastName, MiddleName = newUser.MiddleName }; var password = PasswordHelper.GeneratePassword(newUser.Password); model.Salt = password.Salt; model.Password = password.Hash; model.Token = Guid.NewGuid().ToString(); return(await _userWriteOperations.Create(model)); }
public async Task <Contract.Models.User> UpdateOne(string id, Contract.Models.User item) { var filter = Builders <Contract.Models.User> .Filter.Eq(x => x.Id, id); var result = await _userContext.Users.UpdateOneAsync(filter, new ObjectUpdateDefinition <Contract.Models.User>(item)); return(result.IsAcknowledged ? item : null); }
public async Task <Contract.Models.User> Create(Contract.Models.User item) { await _userContext.Users.InsertOneAsync(item); return(item); }