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));
        }
Example #2
0
        // 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);
        }