From 0f3e02cb92dd4abc40f6c7d9b522554ef9402ed7 Mon Sep 17 00:00:00 2001 From: "ani_konarcheva@abv.bg" Date: Wed, 30 Mar 2022 14:25:53 +0300 Subject: [PATCH] Register --- RentACar/Data/Data.csproj | 10 +- RentACar/Data/Data/RentACarDbContext.cs | 3 +- .../20220329101121_initial.Designer.cs} | 194 ++++++++++-- .../Data/Migrations/20220329101121_initial.cs | 17 ++ .../Areas/Identity/IdentityHostingStartup.cs | 21 ++ .../Areas/Identity/Pages/Account/Login.cshtml | 85 ++++++ .../Identity/Pages/Account/Login.cshtml.cs | 111 +++++++ .../Identity/Pages/Account/Logout.cshtml | 21 ++ .../Identity/Pages/Account/Logout.cshtml.cs | 44 +++ .../Identity/Pages/Account/Register.cshtml | 67 +++++ .../Identity/Pages/Account/Register.cshtml.cs | 108 +++++++ .../Pages/Account/_ViewImports.cshtml | 1 + .../Pages/_ValidationScriptsPartial.cshtml | 18 ++ .../Areas/Identity/Pages/_ViewImports.cshtml | 4 + RentACar/WebApp/Controllers/CarsController.cs | 153 ++++++++++ .../WebApp/Controllers/RentsController.cs | 153 ++++++++++ RentACar/WebApp/Data/ApplicationDbContext.cs | 16 - .../00000000000000_CreateIdentitySchema.cs | 220 -------------- .../ApplicationDbContextModelSnapshot.cs | 275 ------------------ RentACar/WebApp/ScaffoldingReadMe.txt | 3 + RentACar/WebApp/Startup.cs | 24 +- RentACar/WebApp/Views/Cars/Create.cshtml | 62 ++++ RentACar/WebApp/Views/Cars/Delete.cshtml | 57 ++++ RentACar/WebApp/Views/Cars/Details.cshtml | 54 ++++ RentACar/WebApp/Views/Cars/Edit.cshtml | 59 ++++ RentACar/WebApp/Views/Cars/Index.cshtml | 65 +++++ RentACar/WebApp/Views/Rents/Create.cshtml | 38 +++ RentACar/WebApp/Views/Rents/Delete.cshtml | 33 +++ RentACar/WebApp/Views/Rents/Details.cshtml | 30 ++ RentACar/WebApp/Views/Rents/Edit.cshtml | 39 +++ RentACar/WebApp/Views/Rents/Index.cshtml | 41 +++ RentACar/WebApp/Views/Shared/_Layout.cshtml | 3 + .../WebApp/Views/Shared/_LoginPartial.cshtml | 45 +-- RentACar/WebApp/WebApp.csproj | 12 +- RentACar/WebApp/appsettings.json | 22 +- ...osoft.AspNetCore.Cryptography.Internal.dll | Bin 41864 -> 41864 bytes ....AspNetCore.Cryptography.KeyDerivation.dll | Bin 21896 -> 21896 bytes ...spNetCore.Identity.EntityFrameworkCore.dll | Bin 97672 -> 97672 bytes ...rosoft.AspNetCore.Identity.UI.Views.V4.dll | Bin 367496 -> 367496 bytes .../Microsoft.AspNetCore.Identity.UI.dll | Bin 131464 -> 131464 bytes .../Microsoft.EntityFrameworkCore.Design.dll | Bin 301960 -> 301960 bytes ...icrosoft.EntityFrameworkCore.SqlServer.dll | Bin 354184 -> 354176 bytes ...soft.Extensions.FileProviders.Embedded.dll | Bin 31608 -> 31624 bytes .../Microsoft.Extensions.Identity.Core.dll | Bin 166776 -> 166792 bytes .../Microsoft.Extensions.Identity.Stores.dll | Bin 40824 -> 40824 bytes .../WebApp/bin/Debug/net5.0/appsettings.json | 22 +- 46 files changed, 1528 insertions(+), 602 deletions(-) rename RentACar/{WebApp/Data/Migrations/00000000000000_CreateIdentitySchema.Designer.cs => Data/Migrations/20220329101121_initial.Designer.cs} (60%) create mode 100644 RentACar/Data/Migrations/20220329101121_initial.cs create mode 100644 RentACar/WebApp/Areas/Identity/IdentityHostingStartup.cs create mode 100644 RentACar/WebApp/Areas/Identity/Pages/Account/Login.cshtml create mode 100644 RentACar/WebApp/Areas/Identity/Pages/Account/Login.cshtml.cs create mode 100644 RentACar/WebApp/Areas/Identity/Pages/Account/Logout.cshtml create mode 100644 RentACar/WebApp/Areas/Identity/Pages/Account/Logout.cshtml.cs create mode 100644 RentACar/WebApp/Areas/Identity/Pages/Account/Register.cshtml create mode 100644 RentACar/WebApp/Areas/Identity/Pages/Account/Register.cshtml.cs create mode 100644 RentACar/WebApp/Areas/Identity/Pages/Account/_ViewImports.cshtml create mode 100644 RentACar/WebApp/Areas/Identity/Pages/_ValidationScriptsPartial.cshtml create mode 100644 RentACar/WebApp/Areas/Identity/Pages/_ViewImports.cshtml create mode 100644 RentACar/WebApp/Controllers/CarsController.cs create mode 100644 RentACar/WebApp/Controllers/RentsController.cs delete mode 100644 RentACar/WebApp/Data/ApplicationDbContext.cs delete mode 100644 RentACar/WebApp/Data/Migrations/00000000000000_CreateIdentitySchema.cs delete mode 100644 RentACar/WebApp/Data/Migrations/ApplicationDbContextModelSnapshot.cs create mode 100644 RentACar/WebApp/ScaffoldingReadMe.txt create mode 100644 RentACar/WebApp/Views/Cars/Create.cshtml create mode 100644 RentACar/WebApp/Views/Cars/Delete.cshtml create mode 100644 RentACar/WebApp/Views/Cars/Details.cshtml create mode 100644 RentACar/WebApp/Views/Cars/Edit.cshtml create mode 100644 RentACar/WebApp/Views/Cars/Index.cshtml create mode 100644 RentACar/WebApp/Views/Rents/Create.cshtml create mode 100644 RentACar/WebApp/Views/Rents/Delete.cshtml create mode 100644 RentACar/WebApp/Views/Rents/Details.cshtml create mode 100644 RentACar/WebApp/Views/Rents/Edit.cshtml create mode 100644 RentACar/WebApp/Views/Rents/Index.cshtml diff --git a/RentACar/Data/Data.csproj b/RentACar/Data/Data.csproj index 52c6c53..c0a087d 100644 --- a/RentACar/Data/Data.csproj +++ b/RentACar/Data/Data.csproj @@ -4,6 +4,12 @@ net5.0 + + + + + + @@ -17,8 +23,4 @@ - - - - diff --git a/RentACar/Data/Data/RentACarDbContext.cs b/RentACar/Data/Data/RentACarDbContext.cs index 8539c6a..54829fe 100644 --- a/RentACar/Data/Data/RentACarDbContext.cs +++ b/RentACar/Data/Data/RentACarDbContext.cs @@ -8,7 +8,6 @@ namespace Data { public class RentACarDbContext : IdentityDbContext { - public virtual DbSet Cars { get; set; } public virtual DbSet Rents { get; set; } @@ -26,7 +25,7 @@ namespace Data { if (!optionsBuilder.IsConfigured) { - optionsBuilder.UseSqlServer("Server=.;Database=RentACar;Integrated Security=true;"); + optionsBuilder.UseSqlServer("Server=(localdb)\\MSSQLLocalDB;Database=RentACar;Integrated Security=true;"); } } diff --git a/RentACar/WebApp/Data/Migrations/00000000000000_CreateIdentitySchema.Designer.cs b/RentACar/Data/Migrations/20220329101121_initial.Designer.cs similarity index 60% rename from RentACar/WebApp/Data/Migrations/00000000000000_CreateIdentitySchema.Designer.cs rename to RentACar/Data/Migrations/20220329101121_initial.Designer.cs index 2563c99..96cd065 100644 --- a/RentACar/WebApp/Data/Migrations/00000000000000_CreateIdentitySchema.Designer.cs +++ b/RentACar/Data/Migrations/20220329101121_initial.Designer.cs @@ -1,26 +1,149 @@ -// +// using System; -using API.Data; +using Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -namespace API.Data.Migrations +namespace Data.Migrations { - [DbContext(typeof(ApplicationDbContext))] - [Migration("00000000000000_CreateIdentitySchema")] - partial class CreateIdentitySchema + [DbContext(typeof(RentACarDbContext))] + [Migration("20220329101121_initial")] + partial class initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "3.0.0") .HasAnnotation("Relational:MaxIdentifierLength", 128) + .HasAnnotation("ProductVersion", "5.0.13") .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + modelBuilder.Entity("Data.Entities.Car", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("Brand") + .HasColumnType("nvarchar(max)"); + + b.Property("CountPassengerSeats") + .HasColumnType("int"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Model") + .HasColumnType("nvarchar(max)"); + + b.Property("PriceForDay") + .HasColumnType("decimal(18,2)"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("Cars"); + }); + + modelBuilder.Entity("Data.Entities.Rents", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("CarId") + .HasColumnType("int"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("CarId"); + + b.HasIndex("UserId"); + + b.ToTable("Rents"); + }); + + modelBuilder.Entity("Data.Entities.User", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("FirstName") + .HasColumnType("nvarchar(max)"); + + b.Property("LastName") + .HasColumnType("nvarchar(max)"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasColumnType("nvarchar(max)"); + + b.Property("NormalizedUserName") + .HasColumnType("nvarchar(max)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PersonalNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("UserName") + .IsUnique() + .HasFilter("[UserName] IS NOT NULL"); + + b.ToTable("User"); + }); + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => { b.Property("Id") @@ -31,18 +154,18 @@ namespace API.Data.Migrations .HasColumnType("nvarchar(max)"); b.Property("Name") - .HasColumnType("nvarchar(256)") - .HasMaxLength(256); + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); b.Property("NormalizedName") - .HasColumnType("nvarchar(256)") - .HasMaxLength(256); + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); b.HasKey("Id"); b.HasIndex("NormalizedName") .IsUnique() - .HasName("RoleNameIndex") + .HasDatabaseName("RoleNameIndex") .HasFilter("[NormalizedName] IS NOT NULL"); b.ToTable("AspNetRoles"); @@ -85,8 +208,8 @@ namespace API.Data.Migrations .HasColumnType("nvarchar(max)"); b.Property("Email") - .HasColumnType("nvarchar(256)") - .HasMaxLength(256); + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); b.Property("EmailConfirmed") .HasColumnType("bit"); @@ -98,12 +221,12 @@ namespace API.Data.Migrations .HasColumnType("datetimeoffset"); b.Property("NormalizedEmail") - .HasColumnType("nvarchar(256)") - .HasMaxLength(256); + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); b.Property("NormalizedUserName") - .HasColumnType("nvarchar(256)") - .HasMaxLength(256); + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); b.Property("PasswordHash") .HasColumnType("nvarchar(max)"); @@ -121,17 +244,17 @@ namespace API.Data.Migrations .HasColumnType("bit"); b.Property("UserName") - .HasColumnType("nvarchar(256)") - .HasMaxLength(256); + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); b.HasKey("Id"); b.HasIndex("NormalizedEmail") - .HasName("EmailIndex"); + .HasDatabaseName("EmailIndex"); b.HasIndex("NormalizedUserName") .IsUnique() - .HasName("UserNameIndex") + .HasDatabaseName("UserNameIndex") .HasFilter("[NormalizedUserName] IS NOT NULL"); b.ToTable("AspNetUsers"); @@ -164,12 +287,10 @@ namespace API.Data.Migrations modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => { b.Property("LoginProvider") - .HasColumnType("nvarchar(128)") - .HasMaxLength(128); + .HasColumnType("nvarchar(450)"); b.Property("ProviderKey") - .HasColumnType("nvarchar(128)") - .HasMaxLength(128); + .HasColumnType("nvarchar(450)"); b.Property("ProviderDisplayName") .HasColumnType("nvarchar(max)"); @@ -206,12 +327,10 @@ namespace API.Data.Migrations .HasColumnType("nvarchar(450)"); b.Property("LoginProvider") - .HasColumnType("nvarchar(128)") - .HasMaxLength(128); + .HasColumnType("nvarchar(450)"); b.Property("Name") - .HasColumnType("nvarchar(128)") - .HasMaxLength(128); + .HasColumnType("nvarchar(450)"); b.Property("Value") .HasColumnType("nvarchar(max)"); @@ -221,6 +340,21 @@ namespace API.Data.Migrations b.ToTable("AspNetUserTokens"); }); + modelBuilder.Entity("Data.Entities.Rents", b => + { + b.HasOne("Data.Entities.Car", "Car") + .WithMany() + .HasForeignKey("CarId"); + + b.HasOne("Data.Entities.User", "User") + .WithMany() + .HasForeignKey("UserId"); + + b.Navigation("Car"); + + b.Navigation("User"); + }); + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => { b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) diff --git a/RentACar/Data/Migrations/20220329101121_initial.cs b/RentACar/Data/Migrations/20220329101121_initial.cs new file mode 100644 index 0000000..9fb816c --- /dev/null +++ b/RentACar/Data/Migrations/20220329101121_initial.cs @@ -0,0 +1,17 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Data.Migrations +{ + public partial class initial : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/RentACar/WebApp/Areas/Identity/IdentityHostingStartup.cs b/RentACar/WebApp/Areas/Identity/IdentityHostingStartup.cs new file mode 100644 index 0000000..bb403e8 --- /dev/null +++ b/RentACar/WebApp/Areas/Identity/IdentityHostingStartup.cs @@ -0,0 +1,21 @@ +using System; +using Data; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Identity.UI; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + +[assembly: HostingStartup(typeof(WebApp.Areas.Identity.IdentityHostingStartup))] +namespace WebApp.Areas.Identity +{ + public class IdentityHostingStartup : IHostingStartup + { + public void Configure(IWebHostBuilder builder) + { + builder.ConfigureServices((context, services) => { + }); + } + } +} \ No newline at end of file diff --git a/RentACar/WebApp/Areas/Identity/Pages/Account/Login.cshtml b/RentACar/WebApp/Areas/Identity/Pages/Account/Login.cshtml new file mode 100644 index 0000000..8e4d327 --- /dev/null +++ b/RentACar/WebApp/Areas/Identity/Pages/Account/Login.cshtml @@ -0,0 +1,85 @@ +@page +@model LoginModel + +@{ + ViewData["Title"] = "Log in"; +} + +

@ViewData["Title"]

+
+
+
+
+

Use a local account to log in.

+
+
+
+ + + +
+
+ + + +
+
+
+ +
+
+
+ +
+ +
+
+
+
+
+

Use another service to log in.

+
+ @{ + if ((Model.ExternalLogins?.Count ?? 0) == 0) + { +
+

+ There are no external authentication services configured. See this article + for details on setting up this ASP.NET application to support logging in via external services. +

+
+ } + else + { +
+
+

+ @foreach (var provider in Model.ExternalLogins) + { + + } +

+
+
+ } + } +
+
+
+ +@section Scripts { + +} diff --git a/RentACar/WebApp/Areas/Identity/Pages/Account/Login.cshtml.cs b/RentACar/WebApp/Areas/Identity/Pages/Account/Login.cshtml.cs new file mode 100644 index 0000000..011e062 --- /dev/null +++ b/RentACar/WebApp/Areas/Identity/Pages/Account/Login.cshtml.cs @@ -0,0 +1,111 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text.Encodings.Web; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Identity.UI.Services; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Logging; +using Data.Entities; + +namespace WebApp.Areas.Identity.Pages.Account +{ + [AllowAnonymous] + public class LoginModel : PageModel + { + private readonly UserManager _userManager; + private readonly SignInManager _signInManager; + private readonly ILogger _logger; + + public LoginModel(SignInManager signInManager, + ILogger logger, + UserManager userManager) + { + _userManager = userManager; + _signInManager = signInManager; + _logger = logger; + } + + [BindProperty] + public InputModel Input { get; set; } + + public IList ExternalLogins { get; set; } + + public string ReturnUrl { get; set; } + + [TempData] + public string ErrorMessage { get; set; } + + public class InputModel + { + [Required] + [EmailAddress] + public string Email { get; set; } + + [Required] + [DataType(DataType.Password)] + public string Password { get; set; } + + [Display(Name = "Remember me?")] + public bool RememberMe { get; set; } + } + + public async Task OnGetAsync(string returnUrl = null) + { + if (!string.IsNullOrEmpty(ErrorMessage)) + { + ModelState.AddModelError(string.Empty, ErrorMessage); + } + + returnUrl ??= Url.Content("~/"); + + // Clear the existing external cookie to ensure a clean login process + await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme); + + ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); + + ReturnUrl = returnUrl; + } + + public async Task OnPostAsync(string returnUrl = null) + { + returnUrl ??= Url.Content("~/"); + + ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); + + if (ModelState.IsValid) + { + // This doesn't count login failures towards account lockout + // To enable password failures to trigger account lockout, set lockoutOnFailure: true + var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false); + if (result.Succeeded) + { + _logger.LogInformation("User logged in."); + return LocalRedirect(returnUrl); + } + if (result.RequiresTwoFactor) + { + return RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe }); + } + if (result.IsLockedOut) + { + _logger.LogWarning("User account locked out."); + return RedirectToPage("./Lockout"); + } + else + { + ModelState.AddModelError(string.Empty, "Invalid login attempt."); + return Page(); + } + } + + // If we got this far, something failed, redisplay form + return Page(); + } + } +} diff --git a/RentACar/WebApp/Areas/Identity/Pages/Account/Logout.cshtml b/RentACar/WebApp/Areas/Identity/Pages/Account/Logout.cshtml new file mode 100644 index 0000000..eca33c6 --- /dev/null +++ b/RentACar/WebApp/Areas/Identity/Pages/Account/Logout.cshtml @@ -0,0 +1,21 @@ +@page +@model LogoutModel +@{ + ViewData["Title"] = "Log out"; +} + +
+

@ViewData["Title"]

+ @{ + if (User.Identity.IsAuthenticated) + { +
+ +
+ } + else + { +

You have successfully logged out of the application.

+ } + } +
\ No newline at end of file diff --git a/RentACar/WebApp/Areas/Identity/Pages/Account/Logout.cshtml.cs b/RentACar/WebApp/Areas/Identity/Pages/Account/Logout.cshtml.cs new file mode 100644 index 0000000..5755a27 --- /dev/null +++ b/RentACar/WebApp/Areas/Identity/Pages/Account/Logout.cshtml.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Data.Entities; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Logging; + +namespace WebApp.Areas.Identity.Pages.Account +{ + [AllowAnonymous] + public class LogoutModel : PageModel + { + private readonly SignInManager _signInManager; + private readonly ILogger _logger; + + public LogoutModel(SignInManager signInManager, ILogger logger) + { + _signInManager = signInManager; + _logger = logger; + } + + public void OnGet() + { + } + + public async Task OnPost(string returnUrl = null) + { + await _signInManager.SignOutAsync(); + _logger.LogInformation("User logged out."); + if (returnUrl != null) + { + return LocalRedirect(returnUrl); + } + else + { + return RedirectToPage(); + } + } + } +} diff --git a/RentACar/WebApp/Areas/Identity/Pages/Account/Register.cshtml b/RentACar/WebApp/Areas/Identity/Pages/Account/Register.cshtml new file mode 100644 index 0000000..d9b50ab --- /dev/null +++ b/RentACar/WebApp/Areas/Identity/Pages/Account/Register.cshtml @@ -0,0 +1,67 @@ +@page +@model RegisterModel +@{ + ViewData["Title"] = "Register"; +} + +

@ViewData["Title"]

+ +
+
+
+

Create a new account.

+
+
+
+ + + +
+
+ + + +
+
+ + + +
+ +
+
+
+
+

Use another service to register.

+
+ @{ + if ((Model.ExternalLogins?.Count ?? 0) == 0) + { +
+

+ There are no external authentication services configured. See this article + for details on setting up this ASP.NET application to support logging in via external services. +

+
+ } + else + { +
+
+

+ @foreach (var provider in Model.ExternalLogins) + { + + } +

+
+
+ } + } +
+
+
+ +@section Scripts { + +} diff --git a/RentACar/WebApp/Areas/Identity/Pages/Account/Register.cshtml.cs b/RentACar/WebApp/Areas/Identity/Pages/Account/Register.cshtml.cs new file mode 100644 index 0000000..4ba281f --- /dev/null +++ b/RentACar/WebApp/Areas/Identity/Pages/Account/Register.cshtml.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Text.Encodings.Web; +using System.Threading.Tasks; +using Data; +using Data.Entities; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Identity.UI.Services; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.AspNetCore.WebUtilities; +using Microsoft.Extensions.Logging; + +namespace WebApp.Areas.Identity.Pages.Account +{ + [AllowAnonymous] + public class RegisterModel : PageModel + { + private readonly SignInManager _signInManager; + private readonly UserManager _userManager; + private readonly ILogger _logger; + private readonly RentACarDbContext _rentACartDbContext; + + public RegisterModel( + UserManager userManager, + SignInManager signInManager, + ILogger logger, + RentACarDbContext rentACarDbContext) + { + _userManager = userManager; + _signInManager = signInManager; + _logger = logger; + _rentACartDbContext = rentACarDbContext; + } + + [BindProperty] + public InputModel Input { get; set; } + + public string ReturnUrl { get; set; } + + public IList ExternalLogins { get; set; } + + public class InputModel + { + [Required] + [EmailAddress] + [Display(Name = "Email")] + public string Email { get; set; } + + [Required] + [StringLength(100, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 6)] + [DataType(DataType.Password)] + [Display(Name = "Password")] + public string Password { get; set; } + + [DataType(DataType.Password)] + [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) + { + ReturnUrl = returnUrl; + ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); + } + + public async Task OnPostAsync(string returnUrl = null) + { + returnUrl ??= Url.Content("~/"); + ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); + if (ModelState.IsValid) + { + var user = new User { 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); + code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); + var callbackUrl = Url.Page( + "/Account/ConfirmEmail", + pageHandler: null, + values: new { area = "Identity", userId = user.Id, code = code, returnUrl = returnUrl }, + protocol: Request.Scheme); + + + 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(); + } + } +} diff --git a/RentACar/WebApp/Areas/Identity/Pages/Account/_ViewImports.cshtml b/RentACar/WebApp/Areas/Identity/Pages/Account/_ViewImports.cshtml new file mode 100644 index 0000000..bb94c6b --- /dev/null +++ b/RentACar/WebApp/Areas/Identity/Pages/Account/_ViewImports.cshtml @@ -0,0 +1 @@ +@using WebApp.Areas.Identity.Pages.Account \ No newline at end of file diff --git a/RentACar/WebApp/Areas/Identity/Pages/_ValidationScriptsPartial.cshtml b/RentACar/WebApp/Areas/Identity/Pages/_ValidationScriptsPartial.cshtml new file mode 100644 index 0000000..bacc0ae --- /dev/null +++ b/RentACar/WebApp/Areas/Identity/Pages/_ValidationScriptsPartial.cshtml @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/RentACar/WebApp/Areas/Identity/Pages/_ViewImports.cshtml b/RentACar/WebApp/Areas/Identity/Pages/_ViewImports.cshtml new file mode 100644 index 0000000..af3a34a --- /dev/null +++ b/RentACar/WebApp/Areas/Identity/Pages/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@using Microsoft.AspNetCore.Identity +@using WebApp.Areas.Identity +@using WebApp.Areas.Identity.Pages +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/RentACar/WebApp/Controllers/CarsController.cs b/RentACar/WebApp/Controllers/CarsController.cs new file mode 100644 index 0000000..823c87e --- /dev/null +++ b/RentACar/WebApp/Controllers/CarsController.cs @@ -0,0 +1,153 @@ +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; + +namespace WebApp.Controllers +{ + public class CarsController : Controller + { + private readonly RentACarDbContext _context; + + public CarsController(RentACarDbContext context) + { + _context = context; + } + + // GET: Cars + public async Task Index() + { + return View(await _context.Cars.ToListAsync()); + } + + // GET: Cars/Details/5 + public async Task Details(int? id) + { + if (id == null) + { + return NotFound(); + } + + var car = await _context.Cars + .FirstOrDefaultAsync(m => m.Id == id); + if (car == null) + { + return NotFound(); + } + + return View(car); + } + + // GET: Cars/Create + public IActionResult Create() + { + return View(); + } + + // POST: Cars/Create + // 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] + public async Task Create([Bind("Id,Brand,Model,Year,CountPassengerSeats,Description,PriceForDay")] Car car) + { + if (ModelState.IsValid) + { + _context.Add(car); + await _context.SaveChangesAsync(); + return RedirectToAction(nameof(Index)); + } + return View(car); + } + + // GET: Cars/Edit/5 + public async Task Edit(int? id) + { + if (id == null) + { + return NotFound(); + } + + var car = await _context.Cars.FindAsync(id); + if (car == null) + { + return NotFound(); + } + return View(car); + } + + // POST: Cars/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] + public async Task Edit(int id, [Bind("Id,Brand,Model,Year,CountPassengerSeats,Description,PriceForDay")] Car car) + { + if (id != car.Id) + { + return NotFound(); + } + + if (ModelState.IsValid) + { + try + { + _context.Update(car); + await _context.SaveChangesAsync(); + } + catch (DbUpdateConcurrencyException) + { + if (!CarExists(car.Id)) + { + return NotFound(); + } + else + { + throw; + } + } + return RedirectToAction(nameof(Index)); + } + return View(car); + } + + // GET: Cars/Delete/5 + public async Task Delete(int? id) + { + if (id == null) + { + return NotFound(); + } + + var car = await _context.Cars + .FirstOrDefaultAsync(m => m.Id == id); + if (car == null) + { + return NotFound(); + } + + return View(car); + } + + // POST: Cars/Delete/5 + [HttpPost, ActionName("Delete")] + [ValidateAntiForgeryToken] + public async Task DeleteConfirmed(int id) + { + var car = await _context.Cars.FindAsync(id); + _context.Cars.Remove(car); + await _context.SaveChangesAsync(); + return RedirectToAction(nameof(Index)); + } + + private bool CarExists(int id) + { + return _context.Cars.Any(e => e.Id == id); + } + } +} diff --git a/RentACar/WebApp/Controllers/RentsController.cs b/RentACar/WebApp/Controllers/RentsController.cs new file mode 100644 index 0000000..03fb828 --- /dev/null +++ b/RentACar/WebApp/Controllers/RentsController.cs @@ -0,0 +1,153 @@ +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; + +namespace WebApp.Controllers +{ + public class RentsController : Controller + { + private readonly RentACarDbContext _context; + + public RentsController(RentACarDbContext context) + { + _context = context; + } + + // GET: Rents + public async Task Index() + { + return View(await _context.Rents.ToListAsync()); + } + + // GET: Rents/Details/5 + public async Task Details(int? id) + { + if (id == null) + { + return NotFound(); + } + + var rents = await _context.Rents + .FirstOrDefaultAsync(m => m.Id == id); + if (rents == null) + { + return NotFound(); + } + + return View(rents); + } + + // GET: Rents/Create + public IActionResult Create() + { + return View(); + } + + // POST: Rents/Create + // 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] + public async Task Create([Bind("Id,StartDate,EndDate")] Rents rents) + { + if (ModelState.IsValid) + { + _context.Add(rents); + await _context.SaveChangesAsync(); + return RedirectToAction(nameof(Index)); + } + return View(rents); + } + + // GET: Rents/Edit/5 + public async Task Edit(int? id) + { + if (id == null) + { + return NotFound(); + } + + var rents = await _context.Rents.FindAsync(id); + if (rents == null) + { + return NotFound(); + } + return View(rents); + } + + // POST: Rents/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] + public async Task Edit(int id, [Bind("Id,StartDate,EndDate")] Rents rents) + { + if (id != rents.Id) + { + return NotFound(); + } + + if (ModelState.IsValid) + { + try + { + _context.Update(rents); + await _context.SaveChangesAsync(); + } + catch (DbUpdateConcurrencyException) + { + if (!RentsExists(rents.Id)) + { + return NotFound(); + } + else + { + throw; + } + } + return RedirectToAction(nameof(Index)); + } + return View(rents); + } + + // GET: Rents/Delete/5 + public async Task Delete(int? id) + { + if (id == null) + { + return NotFound(); + } + + var rents = await _context.Rents + .FirstOrDefaultAsync(m => m.Id == id); + if (rents == null) + { + return NotFound(); + } + + return View(rents); + } + + // POST: Rents/Delete/5 + [HttpPost, ActionName("Delete")] + [ValidateAntiForgeryToken] + public async Task DeleteConfirmed(int id) + { + var rents = await _context.Rents.FindAsync(id); + _context.Rents.Remove(rents); + await _context.SaveChangesAsync(); + return RedirectToAction(nameof(Index)); + } + + private bool RentsExists(int id) + { + return _context.Rents.Any(e => e.Id == id); + } + } +} diff --git a/RentACar/WebApp/Data/ApplicationDbContext.cs b/RentACar/WebApp/Data/ApplicationDbContext.cs deleted file mode 100644 index bfbc4b7..0000000 --- a/RentACar/WebApp/Data/ApplicationDbContext.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using Microsoft.AspNetCore.Identity.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore; - -namespace API.Data -{ - public class ApplicationDbContext : IdentityDbContext - { - public ApplicationDbContext(DbContextOptions options) - : base(options) - { - } - } -} diff --git a/RentACar/WebApp/Data/Migrations/00000000000000_CreateIdentitySchema.cs b/RentACar/WebApp/Data/Migrations/00000000000000_CreateIdentitySchema.cs deleted file mode 100644 index 76f8dc7..0000000 --- a/RentACar/WebApp/Data/Migrations/00000000000000_CreateIdentitySchema.cs +++ /dev/null @@ -1,220 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace API.Data.Migrations -{ - public partial class CreateIdentitySchema : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "AspNetRoles", - columns: table => new - { - Id = table.Column(nullable: false), - Name = table.Column(maxLength: 256, nullable: true), - NormalizedName = table.Column(maxLength: 256, nullable: true), - ConcurrencyStamp = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetRoles", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AspNetUsers", - columns: table => new - { - Id = table.Column(nullable: false), - UserName = table.Column(maxLength: 256, nullable: true), - NormalizedUserName = table.Column(maxLength: 256, nullable: true), - Email = table.Column(maxLength: 256, nullable: true), - NormalizedEmail = table.Column(maxLength: 256, nullable: true), - EmailConfirmed = table.Column(nullable: false), - PasswordHash = table.Column(nullable: true), - SecurityStamp = table.Column(nullable: true), - ConcurrencyStamp = table.Column(nullable: true), - PhoneNumber = table.Column(nullable: true), - PhoneNumberConfirmed = table.Column(nullable: false), - TwoFactorEnabled = table.Column(nullable: false), - LockoutEnd = table.Column(nullable: true), - LockoutEnabled = table.Column(nullable: false), - AccessFailedCount = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetUsers", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AspNetRoleClaims", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), - RoleId = table.Column(nullable: false), - ClaimType = table.Column(nullable: true), - ClaimValue = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id); - table.ForeignKey( - name: "FK_AspNetRoleClaims_AspNetRoles_RoleId", - column: x => x.RoleId, - principalTable: "AspNetRoles", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AspNetUserClaims", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: false), - ClaimType = table.Column(nullable: true), - ClaimValue = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetUserClaims", x => x.Id); - table.ForeignKey( - name: "FK_AspNetUserClaims_AspNetUsers_UserId", - column: x => x.UserId, - principalTable: "AspNetUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AspNetUserLogins", - columns: table => new - { - LoginProvider = table.Column(maxLength: 128, nullable: false), - ProviderKey = table.Column(maxLength: 128, nullable: false), - ProviderDisplayName = table.Column(nullable: true), - UserId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey }); - table.ForeignKey( - name: "FK_AspNetUserLogins_AspNetUsers_UserId", - column: x => x.UserId, - principalTable: "AspNetUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AspNetUserRoles", - columns: table => new - { - UserId = table.Column(nullable: false), - RoleId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetUserRoles", x => new { x.UserId, x.RoleId }); - table.ForeignKey( - name: "FK_AspNetUserRoles_AspNetRoles_RoleId", - column: x => x.RoleId, - principalTable: "AspNetRoles", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_AspNetUserRoles_AspNetUsers_UserId", - column: x => x.UserId, - principalTable: "AspNetUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AspNetUserTokens", - columns: table => new - { - UserId = table.Column(nullable: false), - LoginProvider = table.Column(maxLength: 128, nullable: false), - Name = table.Column(maxLength: 128, nullable: false), - Value = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); - table.ForeignKey( - name: "FK_AspNetUserTokens_AspNetUsers_UserId", - column: x => x.UserId, - principalTable: "AspNetUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_AspNetRoleClaims_RoleId", - table: "AspNetRoleClaims", - column: "RoleId"); - - migrationBuilder.CreateIndex( - name: "RoleNameIndex", - table: "AspNetRoles", - column: "NormalizedName", - unique: true, - filter: "[NormalizedName] IS NOT NULL"); - - migrationBuilder.CreateIndex( - name: "IX_AspNetUserClaims_UserId", - table: "AspNetUserClaims", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_AspNetUserLogins_UserId", - table: "AspNetUserLogins", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_AspNetUserRoles_RoleId", - table: "AspNetUserRoles", - column: "RoleId"); - - migrationBuilder.CreateIndex( - name: "EmailIndex", - table: "AspNetUsers", - column: "NormalizedEmail"); - - migrationBuilder.CreateIndex( - name: "UserNameIndex", - table: "AspNetUsers", - column: "NormalizedUserName", - unique: true, - filter: "[NormalizedUserName] IS NOT NULL"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "AspNetRoleClaims"); - - migrationBuilder.DropTable( - name: "AspNetUserClaims"); - - migrationBuilder.DropTable( - name: "AspNetUserLogins"); - - migrationBuilder.DropTable( - name: "AspNetUserRoles"); - - migrationBuilder.DropTable( - name: "AspNetUserTokens"); - - migrationBuilder.DropTable( - name: "AspNetRoles"); - - migrationBuilder.DropTable( - name: "AspNetUsers"); - } - } -} diff --git a/RentACar/WebApp/Data/Migrations/ApplicationDbContextModelSnapshot.cs b/RentACar/WebApp/Data/Migrations/ApplicationDbContextModelSnapshot.cs deleted file mode 100644 index 32e7034..0000000 --- a/RentACar/WebApp/Data/Migrations/ApplicationDbContextModelSnapshot.cs +++ /dev/null @@ -1,275 +0,0 @@ -// -using System; -using API.Data; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -namespace API.Data.Migrations -{ - [DbContext(typeof(ApplicationDbContext))] - partial class ApplicationDbContextModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "3.0.0") - .HasAnnotation("Relational:MaxIdentifierLength", 128) - .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => - { - b.Property("Id") - .HasColumnType("nvarchar(450)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasColumnType("nvarchar(max)"); - - b.Property("Name") - .HasColumnType("nvarchar(256)") - .HasMaxLength(256); - - b.Property("NormalizedName") - .HasColumnType("nvarchar(256)") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName") - .IsUnique() - .HasName("RoleNameIndex") - .HasFilter("[NormalizedName] IS NOT NULL"); - - b.ToTable("AspNetRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int") - .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); - - b.Property("ClaimType") - .HasColumnType("nvarchar(max)"); - - b.Property("ClaimValue") - .HasColumnType("nvarchar(max)"); - - b.Property("RoleId") - .IsRequired() - .HasColumnType("nvarchar(450)"); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetRoleClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => - { - b.Property("Id") - .HasColumnType("nvarchar(450)"); - - b.Property("AccessFailedCount") - .HasColumnType("int"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasColumnType("nvarchar(max)"); - - b.Property("Email") - .HasColumnType("nvarchar(256)") - .HasMaxLength(256); - - b.Property("EmailConfirmed") - .HasColumnType("bit"); - - b.Property("LockoutEnabled") - .HasColumnType("bit"); - - b.Property("LockoutEnd") - .HasColumnType("datetimeoffset"); - - b.Property("NormalizedEmail") - .HasColumnType("nvarchar(256)") - .HasMaxLength(256); - - b.Property("NormalizedUserName") - .HasColumnType("nvarchar(256)") - .HasMaxLength(256); - - b.Property("PasswordHash") - .HasColumnType("nvarchar(max)"); - - b.Property("PhoneNumber") - .HasColumnType("nvarchar(max)"); - - b.Property("PhoneNumberConfirmed") - .HasColumnType("bit"); - - b.Property("SecurityStamp") - .HasColumnType("nvarchar(max)"); - - b.Property("TwoFactorEnabled") - .HasColumnType("bit"); - - b.Property("UserName") - .HasColumnType("nvarchar(256)") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedEmail") - .HasName("EmailIndex"); - - b.HasIndex("NormalizedUserName") - .IsUnique() - .HasName("UserNameIndex") - .HasFilter("[NormalizedUserName] IS NOT NULL"); - - b.ToTable("AspNetUsers"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int") - .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); - - b.Property("ClaimType") - .HasColumnType("nvarchar(max)"); - - b.Property("ClaimValue") - .HasColumnType("nvarchar(max)"); - - b.Property("UserId") - .IsRequired() - .HasColumnType("nvarchar(450)"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.Property("LoginProvider") - .HasColumnType("nvarchar(128)") - .HasMaxLength(128); - - b.Property("ProviderKey") - .HasColumnType("nvarchar(128)") - .HasMaxLength(128); - - b.Property("ProviderDisplayName") - .HasColumnType("nvarchar(max)"); - - b.Property("UserId") - .IsRequired() - .HasColumnType("nvarchar(450)"); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserLogins"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.Property("UserId") - .HasColumnType("nvarchar(450)"); - - b.Property("RoleId") - .HasColumnType("nvarchar(450)"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetUserRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.Property("UserId") - .HasColumnType("nvarchar(450)"); - - b.Property("LoginProvider") - .HasColumnType("nvarchar(128)") - .HasMaxLength(128); - - b.Property("Name") - .HasColumnType("nvarchar(128)") - .HasMaxLength(128); - - b.Property("Value") - .HasColumnType("nvarchar(max)"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AspNetUserTokens"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/RentACar/WebApp/ScaffoldingReadMe.txt b/RentACar/WebApp/ScaffoldingReadMe.txt new file mode 100644 index 0000000..6e6208d --- /dev/null +++ b/RentACar/WebApp/ScaffoldingReadMe.txt @@ -0,0 +1,3 @@ +Support for ASP.NET Core Identity was added to your project. + +For setup and configuration information, see https://go.microsoft.com/fwlink/?linkid=2116645. diff --git a/RentACar/WebApp/Startup.cs b/RentACar/WebApp/Startup.cs index 1b6f8c4..7e67b4c 100644 --- a/RentACar/WebApp/Startup.cs +++ b/RentACar/WebApp/Startup.cs @@ -2,7 +2,8 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using API.Data; +using Data; +using Data.Entities; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.HttpsPolicy; @@ -22,19 +23,28 @@ namespace API Configuration = configuration; } - public IConfiguration Configuration { get; } + public IConfiguration Configuration { get; set; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { - services.AddDbContext(options => - options.UseSqlServer( - Configuration.GetConnectionString("DefaultConnection"))); + services.AddDbContext(options => + options.UseSqlServer( + Configuration.GetConnectionString("DefaultConnection"))); services.AddDatabaseDeveloperPageExceptionFilter(); + services.AddIdentity(options => + { + options.Password.RequireDigit = true; + options.Password.RequiredLength = 3; + options.Password.RequireLowercase = true; + options.Password.RequireNonAlphanumeric = false; + options.Password.RequireUppercase = true; - services.AddDefaultIdentity(options => options.SignIn.RequireConfirmedAccount = true) - .AddEntityFrameworkStores(); + options.User.RequireUniqueEmail = false; + }) + .AddEntityFrameworkStores(); services.AddControllersWithViews(); + services.AddRazorPages(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. diff --git a/RentACar/WebApp/Views/Cars/Create.cshtml b/RentACar/WebApp/Views/Cars/Create.cshtml new file mode 100644 index 0000000..3555bec --- /dev/null +++ b/RentACar/WebApp/Views/Cars/Create.cshtml @@ -0,0 +1,62 @@ +@model Data.Entities.Car + +@{ + ViewData["Title"] = "Create"; +} + +

Create

+ +

Car

+
+
+
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ +
+
+
+
+ + + +@section Scripts { + @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} +} diff --git a/RentACar/WebApp/Views/Cars/Delete.cshtml b/RentACar/WebApp/Views/Cars/Delete.cshtml new file mode 100644 index 0000000..c917cf8 --- /dev/null +++ b/RentACar/WebApp/Views/Cars/Delete.cshtml @@ -0,0 +1,57 @@ +@model Data.Entities.Car + +@{ + ViewData["Title"] = "Delete"; +} + +

Delete

+ +

Are you sure you want to delete this?

+
+

Car

+
+
+
+ @Html.DisplayNameFor(model => model.Brand) +
+
+ @Html.DisplayFor(model => model.Brand) +
+
+ @Html.DisplayNameFor(model => model.Model) +
+
+ @Html.DisplayFor(model => model.Model) +
+
+ @Html.DisplayNameFor(model => model.Year) +
+
+ @Html.DisplayFor(model => model.Year) +
+
+ @Html.DisplayNameFor(model => model.CountPassengerSeats) +
+
+ @Html.DisplayFor(model => model.CountPassengerSeats) +
+
+ @Html.DisplayNameFor(model => model.Description) +
+
+ @Html.DisplayFor(model => model.Description) +
+
+ @Html.DisplayNameFor(model => model.PriceForDay) +
+
+ @Html.DisplayFor(model => model.PriceForDay) +
+
+ +
+ + | + Back to List +
+
diff --git a/RentACar/WebApp/Views/Cars/Details.cshtml b/RentACar/WebApp/Views/Cars/Details.cshtml new file mode 100644 index 0000000..f0ad8cc --- /dev/null +++ b/RentACar/WebApp/Views/Cars/Details.cshtml @@ -0,0 +1,54 @@ +@model Data.Entities.Car + +@{ + ViewData["Title"] = "Details"; +} + +

Details

+ +
+

Car

+
+
+
+ @Html.DisplayNameFor(model => model.Brand) +
+
+ @Html.DisplayFor(model => model.Brand) +
+
+ @Html.DisplayNameFor(model => model.Model) +
+
+ @Html.DisplayFor(model => model.Model) +
+
+ @Html.DisplayNameFor(model => model.Year) +
+
+ @Html.DisplayFor(model => model.Year) +
+
+ @Html.DisplayNameFor(model => model.CountPassengerSeats) +
+
+ @Html.DisplayFor(model => model.CountPassengerSeats) +
+
+ @Html.DisplayNameFor(model => model.Description) +
+
+ @Html.DisplayFor(model => model.Description) +
+
+ @Html.DisplayNameFor(model => model.PriceForDay) +
+
+ @Html.DisplayFor(model => model.PriceForDay) +
+
+
+ diff --git a/RentACar/WebApp/Views/Cars/Edit.cshtml b/RentACar/WebApp/Views/Cars/Edit.cshtml new file mode 100644 index 0000000..5300704 --- /dev/null +++ b/RentACar/WebApp/Views/Cars/Edit.cshtml @@ -0,0 +1,59 @@ +@model Data.Entities.Car + +@{ + ViewData["Title"] = "Edit"; +} + +

Edit

+ +

Car

+
+
+
+
+
+ +
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ +
+
+
+
+ + + +@section Scripts { + @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} +} diff --git a/RentACar/WebApp/Views/Cars/Index.cshtml b/RentACar/WebApp/Views/Cars/Index.cshtml new file mode 100644 index 0000000..bab159c --- /dev/null +++ b/RentACar/WebApp/Views/Cars/Index.cshtml @@ -0,0 +1,65 @@ +@model IEnumerable + +@{ + ViewData["Title"] = "Index"; +} + +

Index

+ +

+ New Car +

+ + + + + + + + + + + + + +@foreach (var item in Model) { + + + + + + + + + +} + +
+ @Html.DisplayNameFor(model => model.Brand) + + @Html.DisplayNameFor(model => model.Model) + + @Html.DisplayNameFor(model => model.Year) + + @Html.DisplayNameFor(model => model.CountPassengerSeats) + + @Html.DisplayNameFor(model => model.Description) + + @Html.DisplayNameFor(model => model.PriceForDay) +
+ @Html.DisplayFor(modelItem => item.Brand) + + @Html.DisplayFor(modelItem => item.Model) + + @Html.DisplayFor(modelItem => item.Year) + + @Html.DisplayFor(modelItem => item.CountPassengerSeats) + + @Html.DisplayFor(modelItem => item.Description) + + @Html.DisplayFor(modelItem => item.PriceForDay) + + Edit | + Details | + Delete +
diff --git a/RentACar/WebApp/Views/Rents/Create.cshtml b/RentACar/WebApp/Views/Rents/Create.cshtml new file mode 100644 index 0000000..c6e8065 --- /dev/null +++ b/RentACar/WebApp/Views/Rents/Create.cshtml @@ -0,0 +1,38 @@ +@model Data.Entities.Rents + +@{ + ViewData["Title"] = "Create"; +} + +

Create

+ +

Rents

+
+
+
+
+
+
+ + + +
+
+ + + +
+
+ +
+
+
+
+ + + +@section Scripts { + @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} +} diff --git a/RentACar/WebApp/Views/Rents/Delete.cshtml b/RentACar/WebApp/Views/Rents/Delete.cshtml new file mode 100644 index 0000000..aacf430 --- /dev/null +++ b/RentACar/WebApp/Views/Rents/Delete.cshtml @@ -0,0 +1,33 @@ +@model Data.Entities.Rents + +@{ + ViewData["Title"] = "Delete"; +} + +

Delete

+ +

Are you sure you want to delete this?

+
+

Rents

+
+
+
+ @Html.DisplayNameFor(model => model.StartDate) +
+
+ @Html.DisplayFor(model => model.StartDate) +
+
+ @Html.DisplayNameFor(model => model.EndDate) +
+
+ @Html.DisplayFor(model => model.EndDate) +
+
+ +
+ + | + Back to List +
+
diff --git a/RentACar/WebApp/Views/Rents/Details.cshtml b/RentACar/WebApp/Views/Rents/Details.cshtml new file mode 100644 index 0000000..e6b5f63 --- /dev/null +++ b/RentACar/WebApp/Views/Rents/Details.cshtml @@ -0,0 +1,30 @@ +@model Data.Entities.Rents + +@{ + ViewData["Title"] = "Details"; +} + +

Details

+ +
+

Rents

+
+
+
+ @Html.DisplayNameFor(model => model.StartDate) +
+
+ @Html.DisplayFor(model => model.StartDate) +
+
+ @Html.DisplayNameFor(model => model.EndDate) +
+
+ @Html.DisplayFor(model => model.EndDate) +
+
+
+ diff --git a/RentACar/WebApp/Views/Rents/Edit.cshtml b/RentACar/WebApp/Views/Rents/Edit.cshtml new file mode 100644 index 0000000..63aea9d --- /dev/null +++ b/RentACar/WebApp/Views/Rents/Edit.cshtml @@ -0,0 +1,39 @@ +@model Data.Entities.Rents + +@{ + ViewData["Title"] = "Edit"; +} + +

Edit

+ +

Rents

+
+
+
+
+
+ +
+ + + +
+
+ + + +
+
+ +
+
+
+
+ + + +@section Scripts { + @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} +} diff --git a/RentACar/WebApp/Views/Rents/Index.cshtml b/RentACar/WebApp/Views/Rents/Index.cshtml new file mode 100644 index 0000000..80c82a5 --- /dev/null +++ b/RentACar/WebApp/Views/Rents/Index.cshtml @@ -0,0 +1,41 @@ +@model IEnumerable + +@{ + ViewData["Title"] = "Index"; +} + +

Index

+ +

+ Create New +

+ + + + + + + + + +@foreach (var item in Model) { + + + + + +} + +
+ @Html.DisplayNameFor(model => model.StartDate) + + @Html.DisplayNameFor(model => model.EndDate) +
+ @Html.DisplayFor(modelItem => item.StartDate) + + @Html.DisplayFor(modelItem => item.EndDate) + + Edit | + Details | + Delete +
diff --git a/RentACar/WebApp/Views/Shared/_Layout.cshtml b/RentACar/WebApp/Views/Shared/_Layout.cshtml index 3ff6897..40f538c 100644 --- a/RentACar/WebApp/Views/Shared/_Layout.cshtml +++ b/RentACar/WebApp/Views/Shared/_Layout.cshtml @@ -24,6 +24,9 @@ + diff --git a/RentACar/WebApp/Views/Shared/_LoginPartial.cshtml b/RentACar/WebApp/Views/Shared/_LoginPartial.cshtml index cd256aa..099c53d 100644 --- a/RentACar/WebApp/Views/Shared/_LoginPartial.cshtml +++ b/RentACar/WebApp/Views/Shared/_LoginPartial.cshtml @@ -1,26 +1,27 @@ @using Microsoft.AspNetCore.Identity -@inject SignInManager SignInManager -@inject UserManager UserManager +@using Data.Entities +@inject SignInManager SignInManager +@inject UserManager UserManager diff --git a/RentACar/WebApp/WebApp.csproj b/RentACar/WebApp/WebApp.csproj index c9c8900..8dd026f 100644 --- a/RentACar/WebApp/WebApp.csproj +++ b/RentACar/WebApp/WebApp.csproj @@ -7,10 +7,14 @@ - - - - + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + diff --git a/RentACar/WebApp/appsettings.json b/RentACar/WebApp/appsettings.json index adcb56a..b524ae9 100644 --- a/RentACar/WebApp/appsettings.json +++ b/RentACar/WebApp/appsettings.json @@ -1,13 +1,13 @@ { - "ConnectionStrings": { - "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-API-8C2D17B8-38FF-4A01-BC6F-33667A9BA115;Trusted_Connection=True;MultipleActiveResultSets=true" - }, - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - }, - "AllowedHosts": "*" + "ConnectionStrings": { + "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=RentACar;Integrated Security=true;" + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "AllowedHosts": "*" } diff --git a/RentACar/WebApp/bin/Debug/net5.0/Microsoft.AspNetCore.Cryptography.Internal.dll b/RentACar/WebApp/bin/Debug/net5.0/Microsoft.AspNetCore.Cryptography.Internal.dll index 4bb5021822fea55e5db92730ac5796c4dba484f6..9882aa40c23775c011cf1ad99ad9d29e17a3a97e 100644 GIT binary patch delta 3236 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 delta 3236 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 diff --git a/RentACar/WebApp/bin/Debug/net5.0/Microsoft.AspNetCore.Cryptography.KeyDerivation.dll b/RentACar/WebApp/bin/Debug/net5.0/Microsoft.AspNetCore.Cryptography.KeyDerivation.dll index 6a8799cf309a47e9c9a4ff0c1ecdd2374e4e309c..073a44e2a549753f6566f81fdfb4be7116532a10 100644 GIT binary patch delta 3231 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 delta 3231 zcma)-c{J4h9>-^t z#G8R;tIGzJ#-!-yQ#NH73<%@LnTx4Uz7_UAK?9hV?ORF=+)1yy#coMZ&PVI+J}rcGm&h4utYDb zIxN9jalw-cnfVhj4I10s{EL(R4fz$P6d(zLdIhB?EGbD!S2b5gKkMVKT{K5F#8n$S zxqN;>T4q?b?|Th%q48iht{3^TcrjA2-~7WmZPE$(&?LNVJs;EM^_W=LdLEoHx|kaPDN#p-;T|XIdt2mb{^P8wMD8cl5nUf#qV? zCa~uHsQC-*^OMA@KsQAZ>pn3{UEYA>!c;FHyt(c<%jkP}Vf657U^pq-SWlfgV4gn+ zvOUGz!D)%&8TL@UoBh6})m7%8Pjcag5}{p86TCT?fY%~0@8P#;;>LvMN8HUwu02Df z^ioP)#1Wv^IT!mon?_`G^gCFgDJ?L@XGdw5JxlSoO=Iux zI{`GBHf0HnuB6lrPc4tdO}z56J7S&twYqHiMkeU2JqQ2w2IVjCLX zP%N1kL3F=PFRt?f;SqETNvV~Y430J^8_p2}6GJo!>K80#RCbzi0F5C+SD>ns{BJP}pdI9-Er z{c#1k^x*8#55BMZ!q}Vzx5L?i+n|ZjHxmZWAfsA}(3Wx@_vI^=TM{A;QSlAu8BPJG zl7lfbV?;rol>(^d!3j~Iu*Do_^({h)GZ0#@Z9F4{0YB~){=MQh5z715X?sp`RJiZ` zJpa?vQbtlCjTYe)q)2l zo?yN-p>DJ1l5!5Lfy@gUDHFM!y)&GJ+v|$#Jxbyj3&d&q4#v#2wOh|}7Q=mtZLHwU zLc*w-!eZud`bv~|0+d%Iwm=4ra@{wr!fRu1ZZ4_o2eVS9xC&gEbb5!5>p3%4^llh(Jtsj5DIGDmFvY9au% zJeNg+Gu{?wy1ZhMlD5A2eX4D4{jQuDer;Q*8DzK0jMu-RZ5TOL#`ZhK%MfBQC#a5Y zYO*gf_QgL%l$VS$mj4I}1VLPxBTV}rk|NwQ2#rQ#Flg==;!y}JQHyDE;)$Rkfnca% zfW>QS;Pv$kn81^|2b?ouEiN%U_vd#V5a`S_KY0)O%lB~HEq1L?%bv-yxcArM!_3zP zinNUP%8|)oQX4r1S2{n2+3nnkZDh9`SS+f}YSY{a9eL|A+YwpUw8t!O9{y^On&&ef zv+DP9FW5r($G|?76=#UlN7oE_PU_}7+YvH6CiebV+U$|@!WW9N)@2)>13&QI$-oT% zOeNV^vi$49l)Lb7#~CND@5@U^D2$0ozCZu;$9$q13#1Ev=6t~GyoI~LDlslp0J9fq6)vN95 zfLjeMhtINq3v8{I*>k{}Q)2qW-C~(lew;MAZjUGtXwJWvS-2FkmFH>h`A7$n&4O%M z_{{lTy{Ss18@9gydWv^_t)dQS*K@dFZR)n;EiE=Z-WlF#~I+=?&gs z>Aa)Kg6rb6-py{^uhv%U;S!z{Lk~&!bFV;w-Tlq8jPcqBoF+%xiKg#0gtu+55WEc zs9=;1gbxk@f`L(FJ}?lCL}{S-KsE0cezVYcV*nr)N5GRt;NqM`(@~45J?V*K)EW0ZW)I!5 zHNGi}iq63$&Wz<%;rA2F66<){|9ApQ39JwjOQ~$V=aM6xBKXNbTcxfeuHD*f$?B!l zWqSMEOEefI0NJM={af^g01&vJ2LQeS1lTHJ<&?i3HX`0L|Zu73g`>3o0y diff --git a/RentACar/WebApp/bin/Debug/net5.0/Microsoft.AspNetCore.Identity.EntityFrameworkCore.dll b/RentACar/WebApp/bin/Debug/net5.0/Microsoft.AspNetCore.Identity.EntityFrameworkCore.dll index a6e4b28fec0314f3928bdd34529e9a1d899c2704..62437b8d92454959346289c8781a9f55a254f8e5 100644 GIT binary patch delta 3309 zcma)7cU03^7S4;I6ET2vkRnAO_)8^G(a`G-2tmq_VMsKHG(kFQ5Kvgr0i;AJE-W2H z1_lHHK@dcmND)PmUP6_kpiSI!I7U??P+%Rc z0nr&a22PjAgczqWcpQ#!hD67?F&S<|GJ#BVW4O`J&@oIB#6EBWQ2u{*%n8tZ9E-*1 z5U_X%1B2lK>@YzG(!pT0{@)#|V<;eWFU#b-m(I{i=b#zGIsDxaqaf2yOKA9EMR9lD zLH-`u9FYlf&*Pl&S?x}8d9Oc1E>qn3>Y19;1TDstR=!s^iR>zX5DJO-3ct244@^cSf^0)*wmo-{`=9P%d9}KCw0GWE{`+@z#Sj z)#)~16$q7gwIX0J9&SS6YPK!Vg`==AEDQtFff2Yf9tOcM)uU9P0=L7$w73=>#(?3z zcU>3}#^fRl*l8{w&qZ&OrCtaGqP7(u!ntlI47UGxs=bm5KiOxV` z9~kvq(YaM%QTgKAaez^FwKGVThcH+S0gJ(5@C0W`Bo>3gLfkw5ZbAX<@?c=ke)J=t zupZP&JMDwz6s=CxxD*QUb-qnIpz>nKu_WZN+2%oU(h6hgrRAQ+?oR?8;x_B*zwJg= zevvVZ9`F1tOX8g9N>IPY{wGE-F`T{_*w}4$Gm93ulTr})Rb@bUnlr{Yf1EHskV^j) zWWRZ8pe&!!Jvlijk{*_>8NAy3G9V+~w4e1Z3xk%+Rn=~3p)l=U-RhY9)pou?u;zZC z&?%`lbG!QijcfVc>!i6~@^aSUcf)*pF18&0tt-&N+YRg`l<^jlo!)P?%4}X)xkhBxQR_z4Qy2!H;4S^k(s-UM zy*G}AWfB49C0VJai4SNIMkZTzMpjP2XR|{z(?riQ?j@$oS$%Fk+d_EnC)98ZqzK*9!09H%BhAN z9Vd0nDs&dbPQJ~-mSn5d=4E@^Yh3)8KVWekwaVw@ub!WF#m&zH@z{}6k@5cL{!bZk zgw0E}FTIjH#H3l-ZP#iqKNZkRWZw^dXtpcK(HnnW4VUXH`MXj;17EVO$k62bw{O)h znYUG*t8Kqxs1xv^WaIc=^klO$&x&zwLV&l$^z?p{{&c~w$5NEjpXv0UTJ)jaCl~(eCG%x0fa3 zN3RH9RhPRrSjAIo6sMt~N;BZ2_F6=bj^wp>`X%b>C4UUu&^l3ZMD94Jtx@6f9px|| z+GI>;-J|(}B z{O-iF*t^Le))vpPQeTZkSBdtvE-9qwE*zTLOU+cgJK{1C3t~TNTqSMEPe= zs2(GmrsO5uv=p!Scww62yMG93ohHT&kj*B=L@zIBUISrcM)zE?cgBQp^;l61g7Q$mN7&12( z&Y4?5AmcCM)!AL%K#4Wty{CZ6{5<=(@tncS;m0e;Xa$9yWdnoi_=1g#R+o{y4ZdLY zMvl4tu45)oiNz0~<=(>e12jJ>UsD*Wy`E*a&H3R%ce7g0k6k3sly?Hb=n-|r%4d>( z_6r%7OKC$1v{@?6i?X2OWm3L8%du_ayjl zncw!nM+o-SpRfP&aY^Q8m)iaW<7M+|UBekuXAPFmh1cp9vXaj*O47GiM`yPE=cA84 zZEG}+ckM@^zKp`3er7NE04Z@ACcKVAQp&WR(!&V`IH5KoiiWDCeSt7wsRoC_B7E4+ zYW|O2r=z7)%j(nT#4G#>hEbg^f?BryKZ>2YE4IQHq(5^&)xCp*LnKwAc-FE4MmS<^ z4i8T6KRn^mQu86tvSRE-sPQwGsCTG3&`g;Rzt5-Jcb>u;aeFnqzC$v{@MzEj%jh!f(6GYI$@d z7+sZ3aSS&?9pG<3P$DW=&Y?b%$LqhyJh>#t-YrfwTSN4HLCk0Sy*eRYUoV*N^N=!p z6Df9R$0;&D*Qsn@V2+XF;@5%+{7spSsiDg7K7-PoH;Up^eR+EyJGkU-wW=Rb<@?Jb zVub*d0t)@foF0zc=#%{jlAj�(FG|> ziTqLOx_B}KIsX9=Fuwy(Fr>#TsKpBqAlgX~0WgOlG$aV;flYH0zyXZA1~51r=?Mp4 zA-?Zxl+W)3CA`%)0`b4X;TR1_4HD)e?D|lEXC1XEZao;%DVfh~*M4PVWRXmtBq!~! z6>w!{beHzHZWuqJJJ8DMCX&J=w|c3|mw$S3QmTj2S<)+8{7HA}j&9oy^<>3b%IV1Y zuFBE!R?GabGEq#{2BaT5z2Lczq5isLEY)i+Ci3Fb5aI(;o{B~{a^$soytOIn$ntMn zOJI?GJ`CLY(;G&G1BznZ`k~rqdW^MAeSfW;U+u?Mii}h@9CNStp1MB%a+9OP_6r9J zirUUMk%lGfwF^bIPmM6jA+{}yDq&)Pi<7hdQjuJi7`rSS++h8WNI=R6MU59xeNa3# zIzu5tT-d|4Be&MTH^%Wua@^4+A#3mAbO^~Spn1*g+9nbJAs!ea62ST>t|BjxIfKu( zXg~Kl|BbSkEZ(#@zEbZg(a2LUUq2*|%xP2VPn|g&`Z{pikdx}|R~t92Ky6=V)%#NA zJm#J)51uDgV#n^1ddTkCQbAr_?vVCDkI22_0=Skq7DH%Kf7nh-Z=P`DdoD)4?6)9$s35*~&>iGf}0w0T*lykQBLAPyW=>wl|mWDD4@}3(C!T z{T6DLpI?EDBC;5@9j>GjM{}Ze&}dQ~HR|f$2Kr)_(cAKyYL5KVXl8^uZ delta 3309 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 Pw1ena}jWf^#e@if532j3~GQh5yrpk0*f| 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 V1Qx@NW>$t*|15bG_?ME3>|YW{p1=SA delta 3264 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 Id;Y0E0IQVY7XSbN delta 2381 zcmZux2{e@b8lU%_d1;J2qJ*(0Oz+H?8H#K(mcCYH5H$wllNfH1_{wDLrEKxKqDX0D z(iIae%2IBwB^A@C$P$$$$^PMv?{n@s_kQ;|=Q;o9{GR9kod5q>erMWLliO6&lQDgR z;;xL;onXkv46!|s9H$8+X#y(>3N-<=f(#&snBmX{l4Cy(ZKNuP`ctwPrrZ?^lBir# z8V)T?!(o(?71OmXlkRFfc8>2*Z2WTHd|p_dg^}iN3b6E}`BEtsWVSB}<`8KV5;ee& zNMn=DX&g3-E9kv z^$t-Sln&Rn-ud*LS9g6wgud{3ZJ2!IBKSC_^-{=*k2{9XE+s4G)qK8QPtQH)>vQyb zP3IAY-G;vr8*7`TkBPDEegy}yMJvB{2NJsxkp;9@aoJEkTq&AMKks~8(0hK8ida}e zVfa;aVAm?T5}z3O)ib4r-x?A?{UmI%gc?9xi`ZCFzduSSM64hqP>GBpp@=8~ih`n| zV2MQ*wrz)SAV5aCZ6O*&mbhSqxE1;;1ni+@Ks#Aa@){6C!F;_4DeUG%=foK~KpHIM z>jg+4UqqV@x#Gp~rISwzz<|->#nuna$1DzCAZ&ZE81U`mq5^BT`46rzgAOIjLBGO$ zRX;?_6`H||a;?_I>@=P5A=L1if0~&Rf2|5GMDkkK*q{eZ7&Jzw(*mil>K% zijS2Z5Ingf@~g-l+jc|{$cx*kJXOHQW=B#R-+1T*buGo2OtK^Fo{2@pR|xubMtJYi zqfasl7P|YKMxye&k)oIN_`uLh19|!el*F9I7g7Z>PAa}B=%BlR^xf*}n)aE2;lbVy zs@}J_xZID)a8Nh(pGSf8>QMzJt*1{D+#hXX*?MGsS^DMq08g%E=zm!1FK>$rufaRpHK8el%2aN#%NYXjLO$xW#Ijkap zDdYom3?HzSIINJ71CXv2<^}yG`FIrD#U}CHoO`Cmg0Iiu)P>LNp zxvSAveJu$l5my9;$z%$ZK%>$S7dPmZyg8lZXvQGZ>1Or}hGPyB+OEK=7jT$^`#nZh z<{4liyO>bElI1})IT8srm!z*|v7vEBHF z@XR$ku!LPzs_+K2CQ&e2-%}*C`u}04zHM8EUSalE%)K<`H@#t@3|f$ ztd82%^>q0w@}ZIOy{VPNEr)yGm&w{3X-Pf zRrRpeW3f1jCpg{@p7A<;YW!j^zQr|5mIyNLF7M6Wtsb6Je*V$fQ)SIn^H=Ufg`O$1 z(aQCee>-`Uy9Ji`%h|=zct!d__3U3=rj~>YN~#8&@RLFc6n^d z-?0vLz27Ne$Z~-c2s>xp~C0>%!;ZVPa2sCWB0NcHZx&O z!B(>AnEuBTGMR2=c3q;2?ITOKCtbqcw&i)|eO9D?FU;Y=JI|u- z1-t(1O=piyoGtF4u`Nl=jvE}EyvbZ$HA&;gq?r`W~_EEqV+alKQE71`B}t9)=>AN2K?I~h<2-@Dex(^&(YZP)1{C(8B$KdLQEvYAduvo9lEXKRO{kFc+ rEQBnpPG^kGF2qJYLUrj1%r7@C9sjmIeDK8EVvQVIbbk2?cS_{nR2k?g diff --git a/RentACar/WebApp/bin/Debug/net5.0/Microsoft.Extensions.FileProviders.Embedded.dll b/RentACar/WebApp/bin/Debug/net5.0/Microsoft.Extensions.FileProviders.Embedded.dll index eee67890f896b71d57e864d0787e6f80bc06f0e0..ffa5133c4850bb7fbafa28c6421f3cc20e649dc2 100644 GIT binary patch delta 3565 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 bfU6+da?~;;&lh*`+M#Tw9{7Qs!(jgaH(Tby diff --git a/RentACar/WebApp/bin/Debug/net5.0/Microsoft.Extensions.Identity.Core.dll b/RentACar/WebApp/bin/Debug/net5.0/Microsoft.Extensions.Identity.Core.dll index 1d99b393c35a08779527cd1384fe95b4a104e195..029060f4f9bb7ce6cbc8b0c210b081e0ed789fa9 100644 GIT binary patch delta 3630 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 DBEzv! delta 3357 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 diff --git a/RentACar/WebApp/bin/Debug/net5.0/appsettings.json b/RentACar/WebApp/bin/Debug/net5.0/appsettings.json index adcb56a..b524ae9 100644 --- a/RentACar/WebApp/bin/Debug/net5.0/appsettings.json +++ b/RentACar/WebApp/bin/Debug/net5.0/appsettings.json @@ -1,13 +1,13 @@ { - "ConnectionStrings": { - "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-API-8C2D17B8-38FF-4A01-BC6F-33667A9BA115;Trusted_Connection=True;MultipleActiveResultSets=true" - }, - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - }, - "AllowedHosts": "*" + "ConnectionStrings": { + "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=RentACar;Integrated Security=true;" + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "AllowedHosts": "*" }