From 6ab09ad841991b27582d1e6332926a5096a83bde Mon Sep 17 00:00:00 2001 From: "ani_konarcheva@abv.bg" Date: Fri, 8 Apr 2022 18:35:17 +0300 Subject: [PATCH] fixed registration crash --- RentACar/Data/Models/Rents.cs | 1 + RentACar/Data/Models/User.cs | 3 + .../Identity/Pages/Account/Register.cshtml.cs | 6 +- RentACar/WebApp/Controllers/CarsController.cs | 4 +- .../WebApp/Controllers/RentsController.cs | 1 + .../WebApp/Controllers/UsersController.cs | 152 ------------------ RentACar/WebApp/Startup.cs | 1 + RentACar/WebApp/Views/Cars/Index.cshtml | 3 +- RentACar/WebApp/Views/Rents/Index.cshtml | 1 - 9 files changed, 14 insertions(+), 158 deletions(-) delete mode 100644 RentACar/WebApp/Controllers/UsersController.cs diff --git a/RentACar/Data/Models/Rents.cs b/RentACar/Data/Models/Rents.cs index 52349d1..807b722 100644 --- a/RentACar/Data/Models/Rents.cs +++ b/RentACar/Data/Models/Rents.cs @@ -20,6 +20,7 @@ namespace Data.Entities public DateTime StartDate { get; set; } [Required] public DateTime EndDate { get; set; } + [ForeignKey("User")] public string UserId { get; set; } public virtual User User { get; set; } diff --git a/RentACar/Data/Models/User.cs b/RentACar/Data/Models/User.cs index bbe2864..926e822 100644 --- a/RentACar/Data/Models/User.cs +++ b/RentACar/Data/Models/User.cs @@ -1,9 +1,11 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.AspNetCore.Identity; +using Microsoft.EntityFrameworkCore; namespace Data.Entities { @@ -16,4 +18,5 @@ namespace Data.Entities public string PersonalNumber { get; set; } } + } diff --git a/RentACar/WebApp/Areas/Identity/Pages/Account/Register.cshtml.cs b/RentACar/WebApp/Areas/Identity/Pages/Account/Register.cshtml.cs index 61078be..84dbefa 100644 --- a/RentACar/WebApp/Areas/Identity/Pages/Account/Register.cshtml.cs +++ b/RentACar/WebApp/Areas/Identity/Pages/Account/Register.cshtml.cs @@ -65,6 +65,7 @@ namespace WebApp.Areas.Identity.Pages.Account [Display(Name = "Last Name")] public string LastName { get; set; } + [Phone] [Display(Name = "Phone")] public string PhoneNumber { get; set; } @@ -81,6 +82,7 @@ namespace WebApp.Areas.Identity.Pages.Account [Display(Name = "Confirm password")] [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] public string ConfirmPassword { get; set; } + } public async Task OnGetAsync(string returnUrl = null) @@ -99,9 +101,6 @@ namespace WebApp.Areas.Identity.Pages.Account var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { - var defaultrole = _roleManager.FindByIdAsync("d3aa27bb-2866-4a7d-9f0d-30498859ae94").Result; - - await _userManager.AddToRoleAsync(user, defaultrole.Name); _logger.LogInformation("User created a new account with password."); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); @@ -124,6 +123,7 @@ namespace WebApp.Areas.Identity.Pages.Account await _signInManager.SignInAsync(user, isPersistent: false); return LocalRedirect(returnUrl); } + } foreach (var error in result.Errors) { diff --git a/RentACar/WebApp/Controllers/CarsController.cs b/RentACar/WebApp/Controllers/CarsController.cs index 2f3885e..d12e847 100644 --- a/RentACar/WebApp/Controllers/CarsController.cs +++ b/RentACar/WebApp/Controllers/CarsController.cs @@ -27,6 +27,7 @@ namespace WebApp.Controllers } // GET: Cars/Details/5 + public async Task Details(int? id) { if (id == null) @@ -43,7 +44,7 @@ namespace WebApp.Controllers return View(car); } - + // GET: Cars/Create [Authorize(Roles = "Admin")] [HttpGet] @@ -57,6 +58,7 @@ namespace WebApp.Controllers // For more details, see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] + public async Task Create([Bind("Id, Brand, Model, Year, CountPassengerSeats, Description, PriceForDay")] Car car) { if (ModelState.IsValid) diff --git a/RentACar/WebApp/Controllers/RentsController.cs b/RentACar/WebApp/Controllers/RentsController.cs index 5658037..6233890 100644 --- a/RentACar/WebApp/Controllers/RentsController.cs +++ b/RentACar/WebApp/Controllers/RentsController.cs @@ -54,6 +54,7 @@ namespace WebApp.Controllers // For more details, see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] + public async Task Create([Bind("Id,CarId,StartDate,EndDate,UserId")] Rents rents) { if (ModelState.IsValid) diff --git a/RentACar/WebApp/Controllers/UsersController.cs b/RentACar/WebApp/Controllers/UsersController.cs deleted file mode 100644 index c021dcf..0000000 --- a/RentACar/WebApp/Controllers/UsersController.cs +++ /dev/null @@ -1,152 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Rendering; -using Microsoft.EntityFrameworkCore; -using Data; -using Data.Entities; -using Microsoft.AspNetCore.Authorization; - -namespace WebApp.Controllers -{ - public class UserWithRoles - { - public string UserName { get; set; } - public string FirstName { get; set; } - public string LastName { get; set; } - public string Email { get; set; } - public string PersonalNumber { get; set; } - public string PhoneNumber { get; set; } - public string Role { get; set; } - } - - public class UsersController : Controller - { - private readonly RentACarDbContext _context; - - public UsersController(RentACarDbContext context) - { - _context = context; - } - - // GET: Users - [Authorize(Roles = "Admin")] - public async Task Index() - { - ICollection users = await _context.Users.ToListAsync(); - - ICollection usersWithRole = new List(); - - //foreach (var item in users) - //{ - // var userRole = await _context.UserRoles.FirstOrDefaultAsync(userRoles => userRoles.UserId == item.Id); - // var role = await _context.Roles.FirstOrDefaultAsync(role => role.Id == userRole.RoleId); - // usersWithRole.Add( - // new UserWithRoles() - // { - // UserName = item.UserName, - // FirstName = item.FirstName, - // LastName = item.LastName, - // Email = item.Email, - // PersonalNumber = item.PersonalNumber, - // PhoneNumber = item.PhoneNumber, - // Role = role.Name - // } - // ); - //} - - return View(users); - } - - // GET: Users/Edit/5 - [Authorize(Roles = "Admin")] - public async Task Edit(string id) - { - if (id == null) - { - return NotFound(); - } - - var user = await _context.Users.FindAsync(id); - if (user == null) - { - return NotFound(); - } - return View(user); - } - - // POST: Users/Edit/5 - // To protect from overposting attacks, enable the specific properties you want to bind to. - // For more details, see http://go.microsoft.com/fwlink/?LinkId=317598. - [HttpPost] - [ValidateAntiForgeryToken] - [Authorize(Roles = "Admin")] - public async Task Edit(string id, [Bind("FirstName,LastName,PersonalNumber,Id,UserName,NormalizedUserName,Email,NormalizedEmail,EmailConfirmed,PasswordHash,SecurityStamp,ConcurrencyStamp,PhoneNumber,PhoneNumberConfirmed,TwoFactorEnabled,LockoutEnd,LockoutEnabled,AccessFailedCount")] User user) - { - if (id != user.Id) - { - return NotFound(); - } - - if (ModelState.IsValid) - { - try - { - _context.Update(user); - await _context.SaveChangesAsync(); - } - catch (DbUpdateConcurrencyException) - { - if (!UserExists(user.Id)) - { - return NotFound(); - } - else - { - throw; - } - } - return RedirectToAction(nameof(Index)); - } - return View(user); - } - - // GET: Users/Delete/5 - [Authorize(Roles = "Admin")] - public async Task Delete(string id) - { - if (id == null) - { - return NotFound(); - } - - var user = await _context.Users - .FirstOrDefaultAsync(m => m.Id == id); - if (user == null) - { - return NotFound(); - } - - return View(user); - } - - // POST: Users/Delete/5 - [HttpPost, ActionName("Delete")] - [ValidateAntiForgeryToken] - [Authorize(Roles = "Admin")] - public async Task DeleteConfirmed(string id) - { - var user = await _context.Users.FindAsync(id); - _context.Users.Remove(user); - await _context.SaveChangesAsync(); - return RedirectToAction(nameof(Index)); - } - - private bool UserExists(string id) - { - return _context.Users.Any(e => e.Id == id); - } - } -} diff --git a/RentACar/WebApp/Startup.cs b/RentACar/WebApp/Startup.cs index b975999..11138fa 100644 --- a/RentACar/WebApp/Startup.cs +++ b/RentACar/WebApp/Startup.cs @@ -79,6 +79,7 @@ namespace API endpoints.MapRazorPages(); }); + } } } diff --git a/RentACar/WebApp/Views/Cars/Index.cshtml b/RentACar/WebApp/Views/Cars/Index.cshtml index 0013ac8..f3a918a 100644 --- a/RentACar/WebApp/Views/Cars/Index.cshtml +++ b/RentACar/WebApp/Views/Cars/Index.cshtml @@ -5,6 +5,7 @@ }

Vehicle

+

Available cars

@if (this.User.IsInRole("Admin")) { @@ -66,7 +67,7 @@ @Html.DisplayFor(modelItem => item.PriceForDay) - Select + Select @if (this.User.IsInRole("Admin")) { diff --git a/RentACar/WebApp/Views/Rents/Index.cshtml b/RentACar/WebApp/Views/Rents/Index.cshtml index ed1701b..d3ea5fb 100644 --- a/RentACar/WebApp/Views/Rents/Index.cshtml +++ b/RentACar/WebApp/Views/Rents/Index.cshtml @@ -5,7 +5,6 @@ }

Rents

-

Available cars

Create New