public IActionResult Edit(ShelfModificationViewModel model) { var currentUserId = GetCurrentUserId().Result; if (!ModelState.IsValid) { return(Edit()); } foreach (var gameId in model.IdsToAdd) { var gameAppUser = new GameAppUser { UserId = currentUserId, GameId = gameId }; _shelfRepository.AddToShelf(gameAppUser); } foreach (var gameId in model.IdsToDelete) { var gameAppUser = new GameAppUser { UserId = currentUserId, GameId = gameId }; _shelfRepository.RemoveFromShelf(gameAppUser); } TempData["SuccessMessage"] = Constants.GeneralSuccessMessage; return(RedirectToAction(nameof(List))); }
public IActionResult Edit(int id) { var currentUserId = GetCurrentUserId().Result; var gameAppUser = new GameAppUser { UserId = currentUserId, GameId = id }; _shelfRepository.AddToShelf(gameAppUser); TempData["SuccessMessage"] = Constants.GeneralSuccessMessage; return(RedirectToAction(nameof(Edit))); }
public static void SeedAdminUser(UserManager <GameAppUser> _userManager) { var password = "******"; var adminUser = new GameAppUser { UserName = "******", Email = "*****@*****.**", }; var result = _userManager.CreateAsync(adminUser, password).GetAwaiter().GetResult(); if (result.Succeeded) { _userManager.AddToRoleAsync(adminUser, "Admin"); } }
public IActionResult Delete(int id) { var currentUserId = GetCurrentUserId().Result; var gameAppUser = new GameAppUser { UserId = currentUserId, GameId = id }; var deletedGameAppUser = _shelfRepository.RemoveFromShelf(gameAppUser); if (deletedGameAppUser != null) { TempData["SuccessMessage"] = Constants.GeneralSuccessMessage; } return(RedirectToAction(nameof(List))); }
private async Task LoadSharedKeyAndQrCodeUriAsync(GameAppUser user) { // Load the authenticator key & QR code URI to display on the form var unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user); if (string.IsNullOrEmpty(unformattedKey)) { await _userManager.ResetAuthenticatorKeyAsync(user); unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user); } SharedKey = FormatKey(unformattedKey); var email = await _userManager.GetEmailAsync(user); AuthenticatorUri = GenerateQrCodeUri(email, unformattedKey); }
public void Can_Add_To_Shelf() { //Arrange var user = new AppUser { Id = "id1", UserName = "******", Email = "*****@*****.**" }; var game = new Game { GameId = 1, Title = "game1" }; var shelfItem = new GameAppUser { UserId = "id1", GameId = 1 }; using (var factory = new SQLiteDbContextFactory()) { using (var context = factory.CreateContext()) { context.Users.Add(user); context.Games.Add(game); context.SaveChanges(); } //Act using (var context = factory.CreateContext()) { var shelfRepository = new EFShelfRepository(context); shelfRepository.AddToShelf(shelfItem); } //Assert using (var context = factory.CreateContext()) { var shelf = context.GameAppUser .Include(gu => gu.AppUser) .Include(gu => gu.Game) .ToList(); Assert.Single(shelf); Assert.Equal(user.Id, shelf.Single().AppUser.Id); Assert.Equal(user.Id, shelf.Single().UserId); Assert.Equal(game.GameId, shelf.Single().Game.GameId); Assert.Equal(game.GameId, shelf.Single().GameId); } } }
public async Task <IActionResult> OnPostConfirmationAsync(string returnUrl = null) { returnUrl = returnUrl ?? Url.Content("~/"); // Get the information about the user from the external login provider var info = await _signInManager.GetExternalLoginInfoAsync(); if (info == null) { ErrorMessage = "Error loading external login information during confirmation."; return(RedirectToPage("./Login", new { ReturnUrl = returnUrl })); } if (ModelState.IsValid) { var user = new GameAppUser { UserName = Input.Email, Email = Input.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); _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider); return(LocalRedirect(returnUrl)); } } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } LoginProvider = info.LoginProvider; ReturnUrl = returnUrl; return(Page()); }
public void Can_Remove_From_Shelf() { //Arrange var user = new AppUser { Id = "id1", UserName = "******", Email = "*****@*****.**" }; var game = new Game { GameId = 1, Title = "game1" }; var shelfItem = new GameAppUser { UserId = "id1", GameId = 1 }; using (var factory = new SQLiteDbContextFactory()) { using (var context = factory.CreateContext()) { context.Users.Add(user); context.Games.Add(game); context.GameAppUser.Add(shelfItem); context.SaveChanges(); } //Act using (var context = factory.CreateContext()) { var shelfRepository = new EFShelfRepository(context); shelfRepository.RemoveFromShelf(shelfItem); } //Assert using (var context = factory.CreateContext()) { Assert.Empty(context.GameAppUser); Assert.Single(context.Users); Assert.Single(context.Games); } } }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = returnUrl ?? Url.Content("~/"); if (ModelState.IsValid) { var user = new GameAppUser { UserName = Input.Email, Email = Input.Email }; var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { _logger.LogInformation("User created a new account with password."); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { userId = user.Id, code = code }, protocol: Request.Scheme); await _emailSender.SendEmailAsync(Input.Email, "Confirm your email", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); await _signInManager.SignInAsync(user, isPersistent : false); return(LocalRedirect(returnUrl)); } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } // If we got this far, something failed, redisplay form return(Page()); }
public void Can_Get_Shelf_For_User() { //Arrange var user1 = new AppUser { Id = "id1", UserName = "******", Email = "*****@*****.**" }; var user2 = new AppUser { Id = "id2", UserName = "******", Email = "*****@*****.**" }; var user3 = new AppUser { Id = "id3", UserName = "******", Email = "*****@*****.**" }; var game1 = new Game { GameId = 1, Title = "game1" }; var game2 = new Game { GameId = 2, Title = "game2" }; var game3 = new Game { GameId = 3, Title = "game3" }; var game4 = new Game { GameId = 4, Title = "game4" }; var shelfItem1 = new GameAppUser { UserId = "id1", GameId = 1 }; var shelfItem2 = new GameAppUser { UserId = "id1", GameId = 2 }; var shelfItem3 = new GameAppUser { UserId = "id1", GameId = 3 }; var shelfItem4 = new GameAppUser { UserId = "id1", GameId = 4 }; var shelfItem5 = new GameAppUser { UserId = "id2", GameId = 1 }; var shelfItem6 = new GameAppUser { UserId = "id2", GameId = 4 }; var result1 = new List <Game>(); var result2 = new List <Game>(); var result3 = new List <Game>(); using (var factory = new SQLiteDbContextFactory()) { using (var context = factory.CreateContext()) { context.Users.Add(user1); context.Users.Add(user2); context.Users.Add(user3); context.Games.Add(game1); context.Games.Add(game2); context.Games.Add(game3); context.Games.Add(game4); context.GameAppUser.Add(shelfItem1); context.GameAppUser.Add(shelfItem2); context.GameAppUser.Add(shelfItem3); context.GameAppUser.Add(shelfItem4); context.GameAppUser.Add(shelfItem5); context.GameAppUser.Add(shelfItem6); context.SaveChanges(); } //Act using (var context = factory.CreateContext()) { var shelfRepository = new EFShelfRepository(context); result1 = shelfRepository.GetShelfForUser("id1").OrderBy(g => g.Title).ToList(); result2 = shelfRepository.GetShelfForUser("id2").OrderBy(g => g.Title).ToList(); result3 = shelfRepository.GetShelfForUser("id3").OrderBy(g => g.Title).ToList(); } //Assert using (var context = factory.CreateContext()) { var shelf = context.GameAppUser.ToList(); Assert.Equal(3, context.Users.Count()); Assert.Equal(4, context.Games.Count()); Assert.Equal(6, shelf.Count); Assert.Equal(4, result1.Count); Assert.Equal(1, result1[0].GameId); Assert.Equal(2, result1[1].GameId); Assert.Equal(3, result1[2].GameId); Assert.Equal(4, result1[3].GameId); Assert.Equal(2, result2.Count); Assert.Equal(1, result2[0].GameId); Assert.Equal(4, result2[1].GameId); Assert.Empty(result3); } } }