public void UsernameConstructorPopulatesId() { var user = new IdentityUser("Test"); var user2 = new IdentityUser("Test2"); user.Id.Should().NotBeNullOrWhiteSpace(); user2.Id.Should().NotBe(user.Id); }
public void IdIsGeneratedAutomatically() { var user = new IdentityUser(); var user2 = new IdentityUser(); user.Id.Should().NotBeNullOrWhiteSpace(); user2.Id.Should().NotBe(user.Id); }
public async Task<IActionResult> Index() { var stopWatch = new Stopwatch(); long createTime, deleteTime; stopWatch.Start(); var role = new IdentityRole("TestRole"); var users = new IdentityUser[1000]; await _roleManager.CreateAsync(role); for (int i = 0; i < 1000; ++i) { var user = new IdentityUser { UserName = "******" + i, Email = $"test{i}@test.com", }; users[i] = user; await _userManager.CreateAsync(user, "Password123*"); await _userManager.AddToRoleAsync(user, "TestRole"); } stopWatch.Stop(); createTime = stopWatch.ElapsedMilliseconds; stopWatch.Reset(); stopWatch.Start(); for (int i = 0; i < 1000; ++i) { var user = users[i]; await _userManager.RemoveFromRoleAsync(user, "TestRole"); await _userManager.DeleteAsync(user); } await _roleManager.DeleteAsync(role); stopWatch.Stop(); deleteTime = stopWatch.ElapsedMilliseconds; var response = $"Create time: {createTime}ms\r\nDelete Time: {deleteTime}ms"; return Content(response); }
public void UsernameConstructorPopulates() { var user = new IdentityUser("TestUser"); user.UserName.Should().Be("TestUser"); }
/// <summary> /// Adds the standard dummy users to the DB, uses NPOCO to save /// </summary> private void CreateDummyUsers() { var user = new IdentityUser(TestUserName) { NormalizedUserName = TestUserName, Email = TestUserEmail, NormalizedEmail = TestUserEmail, PasswordHash = TestUserPassword }; var user2 = new IdentityUser("Dont Use Me") { NormalizedUserName = "******", Email = "*****@*****.**", NormalizedEmail = "*****@*****.**", PasswordHash = "goaway" }; var dummyLogin = new UserLogin() { ProviderKey = "Dummy", LoginProvider = "LoginProvider", ProviderDisplayName = "DummyDontUse", UserId = user2.Id }; var role = new IdentityRole(TestRoleName) { NormalizedName = TestRoleName }; var testClaim = new UserClaim { ClaimType = TestClaimType, ClaimValue = TestClaimValue, UserId = user.Id }; using (var db = new Database(ConnectionString, ProviderName)) { db.Insert(user); db.Insert(user2); db.Insert(dummyLogin); db.Insert(role); db.Insert(testClaim); } _testUserId = user.Id; _testRoleId = role.Id; }
/// <summary> /// Get a specific user directly from the DB using ADO.NET rather than NPOCO. Ideal for checking data matches between store/NPOCO and the actual DB /// </summary> /// <param name="id">ID of user</param> /// <returns>User or NULL</returns> public IdentityUser GetUser(string id) { IdentityUser user = null; using (var conn = new SqlConnection(ConnectionString)) using (var cmd = new SqlCommand("SELECT * FROM AspNetUsers WHERE Id = @Id", conn)) { cmd.Parameters.AddWithValue("@Id", id); conn.Open(); using (var reader = cmd.ExecuteReader()) { if (reader.Read()) { int col = 0; user = new IdentityUser(); // Read in user data user.Id = reader.GetString(col++); user.AccessFailedCount = reader.GetInt32(col++); user.ConcurrencyStamp = reader.GetStringSafe(col++); user.Email = reader.GetStringSafe(col++); user.EmailConfirmed = reader.GetBoolean(col++); user.LockoutEnabled = reader.GetBoolean(col++); user.LockoutEnd = reader.GetDateTimeOffsetSafe(col++); user.NormalizedEmail = reader.GetStringSafe(col++); user.NormalizedUserName = reader.GetStringSafe(col++); user.PasswordHash = reader.GetStringSafe(col++); user.PhoneNumber = reader.GetStringSafe(col++); user.PhoneNumberConfirmed = reader.GetBoolean(col++); user.SecurityStamp = reader.GetStringSafe(col++); user.TwoFactorEnabled = reader.GetBoolean(col++); user.UserName = reader.GetStringSafe(col++); } } conn.Close(); } return user; }
public async Task<IActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { var user = new IdentityUser { UserName = model.Email, Email = model.Email }; var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713 // Send an email with this link //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); //var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme); //await _emailSender.SendEmailAsync(model.Email, "Confirm your account", // "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>"); await _signInManager.SignInAsync(user, isPersistent: false); return RedirectToAction(nameof(HomeController.Index), "Home"); } AddErrors(result); } // If we got this far, something failed, redisplay form return View(model); }
public async Task<IActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl = null) { if (User.IsSignedIn()) { return RedirectToAction(nameof(ManageController.Index),"Manage"); } if (ModelState.IsValid) { // Get the information about the user from the external login provider var info = await _signInManager.GetExternalLoginInfoAsync(); if (info == null) { return View("ExternalLoginFailure"); } var user = new IdentityUser { UserName = model.Email, Email = model.Email }; var result = await _userManager.CreateAsync(user); if (result.Succeeded) { result = await _userManager.AddLoginAsync(user, info); if (result.Succeeded) { await _signInManager.SignInAsync(user, isPersistent: false); return RedirectToLocal(returnUrl); } } AddErrors(result); } ViewData["ReturnUrl"] = returnUrl; return View(model); }