public async Task <KeyValuePair <int, string> > PostApplicationUser(IdentityUserDTO dto) { dto.UserName = dto.Email; var isUserExixts = await UserExist(dto); if (isUserExixts) { return(new KeyValuePair <int, string>(-3, "User already exists for " + dto.UserName + " email.")); } var user = new ApplicationUser() { UserName = dto.Email, Email = dto.Email, FirstName = dto.FirstName, LastName = dto.LastName }; var result = await _userManager.CreateAsync(user, dto.Password); if (!result.Succeeded) { return(new KeyValuePair <int, string>(-2, result.Errors.FirstOrDefault()?.Description.ToLower())); } var roleRes = await _userManager.AddToRoleAsync(user, Role.WebUser.ToString()); if (!roleRes.Succeeded) { var resDeleteUser = await _userManager.DeleteAsync(user); if (!resDeleteUser.Succeeded) { return(new KeyValuePair <int, string>(-7, "User successfully created but failed to set role, tried to remove user but error occured.")); } return(new KeyValuePair <int, string>(-8, "User successfully created but failed to set role, removed user.")); } var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); var fullname = dto.LastName + " " + dto.FirstName; var mailContent = await EmailBodyCreator.CreateConfirmEmailBody(Utilities.GetCurrHost(_httpContext), fullname, dto.UserName, code); try { await _emailService.SendMailAsync(new List <MailAddress>() { new MailAddress(user.Email) }, null, null, AppCommon.AppName + " - Verify Email", mailContent, null); return(new KeyValuePair <int, string>(1, "User successfully created, email sent.")); } catch (Exception ex) { var resDeleteUser = await _userManager.DeleteAsync(user); if (!resDeleteUser.Succeeded) { return(new KeyValuePair <int, string>(-6, "User successfully created but failed to sent email, tried to remove user but error occured.")); } return(new KeyValuePair <int, string>(-4, "User successfully created but failed to sent email, deleted user.")); } }
public async Task <IActionResult> SendEmailAsync(string name, string email) { var mailContent = await EmailBodyCreator.CreateConfirmEmailBody(Utilities.GetCurrHost(_httpContext), name, null, null); await _emailService.SendMailAsync(new List <MailAddress>() { new MailAddress(email, name) }, null, null, AppCommon.AppName + " - Test mail", mailContent, null); return(OKResult(1, "mail sent to " + email)); }
public async Task <bool> ForgotPasswordAsync(string email) { var user = await _userManager.FindByEmailAsync(email); if (user == null) { return(false); } var resetCode = await _userManager.GeneratePasswordResetTokenAsync(user); var fullname = user.FirstName + " " + user.LastName; var mailContent = await EmailBodyCreator.CreateResetPasswordEmailBody(Utilities.GetCurrHost(_httpContext), fullname, user.Email, resetCode); var fullName = user.FirstName + " " + user.LastName; await _emailService.SendMailAsync(new List <MailAddress>() { new MailAddress(user.Email, fullName) }, null, null, AppCommon.AppName + " - Reset Password", mailContent, null); return(true); }
public async Task <bool> ConfirmEmailAsync(string email, string code) { var user = await _userManager.FindByEmailAsync(email); code = WebUtility.UrlDecode(code); code = code.Replace(' ', '+'); var result = await _userManager.ConfirmEmailAsync(user, code); if (result.Succeeded) { var resetCode = await _userManager.GeneratePasswordResetTokenAsync(user); var fullname = user.FirstName + " " + user.LastName; var mailContent = await EmailBodyCreator.CreateSetPasswordEmailBody(Utilities.GetCurrHost(_httpContext), fullname, user.Email, resetCode); var fullName = user.FirstName + " " + user.LastName; await _emailService.SendMailAsync(new List <MailAddress>() { new MailAddress(user.Email, fullName) }, null, null, AppCommon.AppName + " - Set Username & Password", mailContent, null); return(true); } return(false); }
private static async Task SendExceptionEmailAsync(HttpContext context, IExceptionHandlerFeature contextFeature, IConfiguration config) { var emailSettings = new EmailSettings(); config.GetSection("EmailSettings").Bind(emailSettings); var appSettings = new AppSettings(); config.GetSection("AppSettings").Bind(appSettings); var model = new ErrorDetail() { ConnectionId = context.Connection.Id, RequestUrl = context.Request.Path, Userid = context.User?.GetUserId(), UserEmail = context.User?.GetEmail(), RemoteIp = context.Connection?.RemoteIpAddress?.ToString(), Ex = contextFeature.Error, DateTime = DateTime.UtcNow, RequestMethod = context.Request.Method, Request = context.Request, TimezoneName = appSettings.TimezoneName }; var timeZoneName = appSettings.TimezoneName; var utcOffset = appSettings.UTCOffset.Replace("UTC", "").Replace("utc", "").Trim(); var isAdd = utcOffset.StartsWith("+"); var hm = utcOffset.Replace("+", ""); var ts = TimeSpan.Parse(hm); if (isAdd) { model.DateTime = model.DateTime.Add(ts); } else { model.DateTime = model.DateTime.Subtract(ts); } var contentType = context.Request.ContentType; if (model.RequestMethod == "GET" && context.Request.QueryString.HasValue) { var content = context.Request.QueryString.Value; if (content.Length > 3000) { content = content.Substring(3000) + "....."; } model.Payload = content; } else { if (string.IsNullOrEmpty(contentType) || contentType == "text/plain" || contentType == "application/json") { var reader = new StreamReader(context.Request.Body); context.Request.Body.Position = 0; var content = reader.ReadToEnd(); reader.Close(); if (content.Length > 3000) { content = content.Substring(3000) + "....."; } model.Payload = content; } else if (contentType == "application/octet-stream") { model.Payload = "File is posted with request."; } else { model.Payload = "Data other than 'text/plain', 'application/json' and 'application/octet-stream' posted."; } } var emailService = new EmailService(emailSettings); var body = await EmailBodyCreator.CreateExceptionEmailBody(model); await emailService.SendMailAsync( new List <MailAddress>() { new MailAddress(appSettings.ExceptionEmailSendTo, appSettings.ExceptionEmailSendToName) }, null, null, AppCommon.AppName + " - Exception", body, null); }
public async Task <KeyValuePair <int, string> > RegisterAsync(RegisterViewModel model) { var isUserExixts = await IsUserExists(model.Email); if (isUserExixts) { return(new KeyValuePair <int, string>(-3, "User already exists for " + model.Email + " email.")); } var user = new ApplicationUser { UserName = model.Email, Email = model.Email, EmailConfirmed = false, FirstName = model.FirstName, LastName = model.LastName }; var resultCreateUser = await _userManager.CreateAsync(user, _appSetting.DefaultPassword); if (!resultCreateUser.Succeeded) { _logger.LogInformation("A new user account " + model.Email + " created with default password " + _appSetting.DefaultPassword); return(new KeyValuePair <int, string>(-2, resultCreateUser.Errors.FirstOrDefault()?.Description.ToLower())); } var roleRes = await _userManager.AddToRoleAsync(user, Role.WebUser.ToString()); if (!roleRes.Succeeded) { _logger.LogError("Couldn't add user to role. " + roleRes.Errors.ToJsonString()); _logger.LogWarning("Deleting user : "******"Couldn't delete user " + user.Email + ", Error(s) : " + roleRes.Errors.ToJsonString()); return(new KeyValuePair <int, string>(-7, "User successfully created but failed to set role, tried to remove user but error occured.")); } return(new KeyValuePair <int, string>(-8, "User successfully created but failed to set role, removed user.")); } var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); var fullname = user.FirstName + " " + user.LastName; var mailContent = await EmailBodyCreator.CreateConfirmEmailBody(Utilities.GetCurrHost(_httpContext), fullname, user.Email, code); var fullName = user.FirstName + " " + user.LastName; try { await _emailService.SendMailAsync(new List <MailAddress>() { new MailAddress(user.Email, fullName) }, null, null, AppCommon.AppName + " - Verify Email", mailContent, null); return(new KeyValuePair <int, string>(1, "User successfully created, email sent.")); } catch (Exception ex) { _logger.LogError("Couldn't sent mail. Error : " + ex.ToString()); _logger.LogWarning("Removing user " + user.Email + " from role " + Role.WebUser.ToString()); var resRemoveFromRole = await _userManager.RemoveFromRoleAsync(user, Role.WebUser.ToString()); if (!resRemoveFromRole.Succeeded) { _logger.LogError("Couldn't remove user " + user.Email + " from role " + Role.WebUser.ToString() + ", Error(s) : " + resRemoveFromRole.Errors.ToJsonString()); return(new KeyValuePair <int, string>(-6, "User successfully created but failed to sent email, tried to remove user but error occured.")); } _logger.LogWarning("Deleting user : "******"Couldn't delete user " + user.Email + ", Error(s) : " + resRemoveFromRole.Errors.ToJsonString()); return(new KeyValuePair <int, string>(-6, "User successfully created but failed to sent email, tried to remove user but error occured.")); } return(new KeyValuePair <int, string>(-4, "User successfully created but failed to sent email, deleted user.")); } }