public async Task <IActionResult> OnPostAsync() { try { if (ModelState.IsValid) { var validDoc = true; // Validar CPF if (!_validacoes.IsValidCPF(Input.CPF)) { ModelState.AddModelError("CPF", "Este CPF está incorreto."); _logger.LogWarning("Este CPF está incorreto."); validDoc = false; } if (_context.Users.Any(c => c.CPF == Input.CPF)) { ModelState.AddModelError("CPF", "Este CPF já está sendo utilizado."); _logger.LogWarning("Este CPF já está sendo utilizado."); validDoc = false; } // Validar RG if (!_validacoes.isValidRG(Input.RG)) { ModelState.AddModelError("RG", "Este RG está incorreto."); _logger.LogWarning("Este RG está incorreto."); validDoc = false; } if (_context.Users.Any(c => c.RG == Input.RG)) { ModelState.AddModelError("RG", "Este RG já está sendo utilizado."); _logger.LogWarning("Este RG já está sendo utilizado."); validDoc = false; } // Se algum dos documentos se encontrar em situação irregular irá abortar o processo if (!validDoc) { return(Page()); } var MyCultureInfo = new CultureInfo("pt-BR"); // Seeds an admin user. var user = new ApplicationUser { Nome = Input.Nome, Sobrenome = Input.Sobrenome, AccessFailedCount = 0, Email = Input.Email, EmailConfirmed = true, LockoutEnabled = true, NormalizedEmail = Input.Email.ToUpperInvariant(), NormalizedUserName = Input.Email.ToUpperInvariant(), TwoFactorEnabled = false, UserName = Input.Email, Situacao = "Ativo", HorarioEntrada = Input.HorarioEntrada, HorarioSaida = Input.HorarioSaida, CPF = Input.CPF, RG = Input.RG, DataNascimento = DateTime.Parse(Input.DataNascimento, MyCultureInfo) }; var password = HelperExtensions.GeneratePassword(3, 2, 2, 1); var result = await _userManager.CreateAsync(user, password); if (result.Succeeded) { _logger.LogInformation("User created a new account with password."); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = Url.EmailConfirmationLink(user.Id, code, Request.Scheme); await _emailSender.SendEmailConfirmationAsync(Input.Email, password, callbackUrl); var adminUser = await _userManager.FindByNameAsync(user.UserName); // Assigns the administrator role. await _userManager.AddToRoleAsync(adminUser, "user"); // Assigns claims. var claims = new List <Claim> { new Claim(type: JwtClaimTypes.GivenName, value: user.Nome), new Claim(type: JwtClaimTypes.FamilyName, value: user.Sobrenome), new Claim(type: JwtClaimTypes.BirthDate, value: user.DataNascimento.ToString("dd/MM/yyyy")) }; await _userManager.AddClaimsAsync(adminUser, claims); return(RedirectToPage("../Usuarios")); } } } catch (Exception ex) { ModelState.AddModelError(string.Empty, ex.Message); return(Page()); } return(Page()); }