public ActionResult Login(Login model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                DTIdentityUser user = userManager.Find(model.UserName, model.Password);
                if (user != null)
                {
                    IAuthenticationManager authenticationManager = HttpContext.GetOwinContext().Authentication;
                    authenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
                    ClaimsIdentity identity = userManager.CreateIdentity(
                        user,
                        DefaultAuthenticationTypes.ApplicationCookie);
                    AuthenticationProperties props = new AuthenticationProperties();
                    props.IsPersistent = model.RememberMe;
                    authenticationManager.SignIn(props, identity);
                    if (Url.IsLocalUrl(returnUrl))
                    {
                        return(Redirect(returnUrl));
                    }
                    else
                    {
                        return(RedirectToAction("Index", "Devices"));
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Invalid username or password");
                }
            }

            return(View(model));
        }
        public ActionResult Register(Register model)
        {
            if (ModelState.IsValid)
            {
                DTIdentityUser user = new DTIdentityUser();

                user.UserName  = model.UserName;
                user.Email     = model.Email;
                user.FirstName = model.FirstName;
                user.LastName  = model.LastName;

                IdentityResult result = userManager.Create(user, model.Password);

                if (result.Succeeded)
                {
                    userManager.AddToRole(user.Id, "Employee");
                    return(RedirectToAction("Login", "Account"));
                }
                else
                {
                    ModelState.AddModelError("UserName", "Error while creating the user!");
                }
            }

            return(View(model));
        }
        public ActionResult ChangeProfile()
        {
            DTIdentityUser user  = userManager.FindByName(HttpContext.User.Identity.Name);
            ChangeProfile  model = new ChangeProfile();

            model.FirstName = user.FirstName;
            model.LastName  = user.LastName;
            model.Email     = user.Email;
            return(View(model));
        }
        //// GET: Account/Details/{user id}
        public ActionResult Details(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DTIdentityUser user = userManager.FindById(id);

            if (user == null)
            {
                return(HttpNotFound());
            }

            return(View(user));
        }
        private void CreateSampleAdminUser(DeviceTrackerWeb.DAL.DeviceTrackerWebContext db)
        {
            UserStore <DTIdentityUser>   userStore   = new UserStore <DTIdentityUser>(db);
            UserManager <DTIdentityUser> userManager = new UserManager <DTIdentityUser>(userStore);

            DTIdentityUser user = new DTIdentityUser();

            user.UserName  = "******";
            user.Email     = "*****@*****.**";
            user.FirstName = "Admin";
            user.LastName  = "Admin";
            string password = "******";

            IdentityResult result = userManager.Create(user, password);

            if (result.Succeeded)
            {
                userManager.AddToRole(user.Id, "Administrator");
            }
        }
        public ActionResult ChangePassword(ChangePassword model)
        {
            if (ModelState.IsValid)
            {
                DTIdentityUser user   = userManager.FindByName(HttpContext.User.Identity.Name);
                IdentityResult result = userManager.ChangePassword(user.Id, model.OldPassword, model.NewPassword);

                if (result.Succeeded)
                {
                    IAuthenticationManager authenticationManager = HttpContext.GetOwinContext().Authentication;
                    authenticationManager.SignOut();
                    return(RedirectToAction("Login", "Account"));
                }
                else
                {
                    ModelState.AddModelError("", "Error while changing the password");
                }
            }

            return(View());
        }
        public ActionResult ChangeProfile(ChangeProfile model)
        {
            if (ModelState.IsValid)
            {
                DTIdentityUser user = userManager.FindByName(HttpContext.User.Identity.Name);
                user.FirstName = model.FirstName;
                user.LastName  = model.LastName;
                user.Email     = model.Email;
                IdentityResult result = userManager.Update(user);

                if (result.Succeeded)
                {
                    ViewBag.Message = "Profile updated successfully.";
                    //TODO: put a redirect here to the user page.
                }
                else
                {
                    ModelState.AddModelError("", "Error while saving profile.");
                }
            }
            return(View(model));
        }
        private void CreateSampleUsers(DeviceTrackerWeb.DAL.DeviceTrackerWebContext db)
        {
            UserStore <DTIdentityUser>   userStore   = new UserStore <DTIdentityUser>(db);
            UserManager <DTIdentityUser> userManager = new UserManager <DTIdentityUser>(userStore);

            int userCount = 50;

            for (int i = 0; i < userCount; i++)
            {
                DTIdentityUser user = new DTIdentityUser();
                user.UserName  = string.Format("User_{0}", i);
                user.Email     = string.Format("user_{0}@example.com", i);
                user.FirstName = string.Format("User_{0}_FirstName", i);
                user.LastName  = string.Format("User_{0}_LastName", i);
                string password = "******";

                IdentityResult result = userManager.Create(user, password);

                if (result.Succeeded)
                {
                    userManager.AddToRole(user.Id, "Employee");
                }
            }
        }