public async Task <IActionResult> SendCode(SendCodeViewModel model) { if (!ModelState.IsValid) { return(View()); } var user = await _signInManager.GetTwoFactorAuthenticationUserAsync(); if (user == null) { return(View("Error")); } // Generate the token and send it var code = await _userManager.GenerateTwoFactorTokenAsync(user, model.SelectedProvider); if (string.IsNullOrWhiteSpace(code)) { return(View("Error")); } var message = "Your security code is: " + code; if (model.SelectedProvider == "Email") { await _emailSender.SendEmailAsync(await _userManager.GetEmailAsync(user), "Security Code", message); } else if (model.SelectedProvider == "Phone") { await _smsSender.SendSmsAsync(await _userManager.GetPhoneNumberAsync(user), message); } return(RedirectToAction(nameof(VerifyCode), new { Provider = model.SelectedProvider, ReturnUrl = model.ReturnUrl, RememberMe = model.RememberMe })); }
public async Task <Result> SendSmsCodeAsync(string phoneNumber, string countryCode) { var isExist = await _userQueryRepository.IsExistPhoneAsync(phoneNumber); if (!isExist) { return(Result.Fail(EC.PhoneNotFound, ET.PhoneNotFound)); } var code = SecurityCode.Create(ProviderType.Phone, phoneNumber, CodeActionType.ForgotPasswordByPhone); await _securityCodesRepository.CreateAsync(code); await _unitOfWorks.CommitAsync(); var smsSender = new SmsSender(_globalSettings); var result = await smsSender.SendSmsAsync(phoneNumber, $"{code.Code} is your verification code."); if (result == null) { return(Result.Fail(EC.SmsServiceFailed, ET.SmsServiceFailed)); } return(Result.Ok()); }
private void DoWork(object state) { _logger.LogInformation("Worker Service method DoWork entrance."); if (DateTime.Now.Hour >= 10 && DateTime.Now.Hour <= 14) { var tomorrowDate = DateTime.Today.AddDays(1); var list = new List <string>(); using (var scope = _services.CreateScope()) { var context = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>(); var sows = context.Sow.Where(s => !s.IsRemoved && s.DateBorn == tomorrowDate && !s.IsSmsSend || !s.IsRemoved && s.DateDetachment == tomorrowDate && !s.IsSmsSend || !s.IsRemoved && s.DateInsimination == tomorrowDate && !s.IsSmsSend || !s.IsRemoved && s.VaccineDate == tomorrowDate && !s.IsSmsSend).ToList(); foreach (var item in sows) { if (item.User.PhoneNumberConfirmed) { if (!list.Contains(item.UserId)) { list.Add(item.UserId); var userSows = sows.Where(u => u.UserId == item.UserId); var message = "Aplikacja Alocha.\nJutrzejsze wydarzenia:"; foreach (var sow in userSows) { string status = ""; switch (sow.Status) { case "Prośna": status = "Poród"; if (sow.VaccineDate == tomorrowDate) { status = "Szczepienie"; } break; case "Luźna": status = "Inseminacja"; break; case "Laktacja": status = "Oderwanie prosiąt"; break; } message += string.Format("\nLocha nr {0} - {1}", sow.Number, status); sow.IsSmsSend = true; context.SaveChanges(); } SmsSender.SendSmsAsync(string.Format("48{0}", item.User.PhoneNumber), message).GetAwaiter().GetResult(); _logger.LogInformation(string.Format("The worker service sends a sms to user: {0}, on the number {1}", item.User.Email, item.User.PhoneNumber)); } } } ; } } }
protected async Task <IActionResult> TOTPLogin(LoginModel model) { var phoneNumber = Regex.Match(model.UserIdentifier, @"(.{9})\s*$").Value; var user = Context.Users.FirstOrDefault(e => e.PhoneNumber.EndsWith(phoneNumber)); if (user == null) { return(BadRequest()); } var purpose = $"TOTP:{model.UserIdentifier}"; if (string.IsNullOrEmpty(model.Password)) { model.Password = await UserManager.GenerateUserTokenAsync(user, TokenOptions.DefaultPhoneProvider, purpose); if (Environment.IsDevelopment()) { return(Ok(new { model.Password })); } await SmsSender.SendSmsAsync(model.UserIdentifier, $"Your phone number verification code {model.Password}"); return(Ok(new { model.Password })); } var isValidCode = await UserManager.VerifyUserTokenAsync(user, TokenOptions.DefaultPhoneProvider, purpose, model.Password); if (!isValidCode) { return(BadRequest()); } return(await SignInResultAsync(user)); }
public async Task <Result> SendSmsAsync(string phoneNumber, string countryCode) { if (string.IsNullOrEmpty(phoneNumber) || string.IsNullOrEmpty(countryCode)) { return(Result.Fail(EC.PhoneInvalid, ET.PhoneRequired)); } var code = SecurityCode.Create(ProviderType.Phone, phoneNumber, CodeActionType.ConfirmPhone); await _securityCodesRepository.CreateAsync(code); await _unitOfWorks.CommitAsync(); var smsSender = new SmsSender(_globalSettings); var result = await smsSender.SendSmsAsync(phoneNumber, $"{code.Code} is your verification code."); if (result == null) { return(Result.Fail(EC.SmsServiceFailed, ET.SmsServiceFailed)); } return(Result.Ok()); }
public async Task <MessageResource> SendConfirmPhoneNumberSmsAsync(string phoneNumber, string code) { return(await SmsSender.SendSmsAsync(string.Format("48{0}", phoneNumber), string.Format("Twój kod potwierdzający to:{0}", code))); }