public async Task <IActionResult> Login(LoginViewModel vm) { if (ModelState.IsValid) { var result = await _signInManagerService.PasswordSignInAsync(vm.Username, vm.Password, vm.RememberMe, false); var loggedUser = await _userManagerService.FindByNameAsync(vm.Username); if (result.Succeeded) { if (!string.IsNullOrEmpty(vm.ReturnUrl)) { return(Redirect(vm.ReturnUrl)); } else { GrandeTravelDbContext db = new GrandeTravelDbContext(); var roleProvider = (from r in db.Roles where r.Name.Contains("Provider") select r).FirstOrDefault(); var roleCustomer = (from r in db.Roles where r.Name.Contains("Customer") select r).FirstOrDefault(); var usersProvider = db.Users.Where(x => x.Roles.Select(y => y.RoleId).Contains(roleProvider.Id)).ToList(); var usersCustomer = db.Users.Where(x => x.Roles.Select(y => y.RoleId).Contains(roleCustomer.Id)).ToList(); if (usersProvider.Find(p => p.Id == loggedUser.Id) != null) { return(RedirectToAction("Index", "Provider")); } else if (usersCustomer.Find(c => c.Id == loggedUser.Id) != null) { return(RedirectToAction("Index", "Customer")); } } } } ModelState.AddModelError("", "Username or Password incorrect!"); return(View(vm)); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, GrandeTravelDbContext context, UserManager <MyUser> userManager, RoleManager <IdentityRole> roleManager) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); app.UseApplicationInsightsRequestTelemetry(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseApplicationInsightsExceptionTelemetry(); app.UseStaticFiles(); app.UseIdentity(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); DbInitializer.Initialize(context, userManager, roleManager); }