Пример #1
0
        public void AddAdmin_UserNotInGoodRole_RedirectToHomePage()
        {
            //Arrange
            System_AdminController sac = new System_AdminController();

            var userMock = new Mock <IPrincipal>();

            userMock.Setup(p => p.IsInRole("Regular_User")).Returns(true);

            var requestMock = new Mock <HttpRequestBase>();

            requestMock.SetupGet(x => x.IsAuthenticated).Returns(true);

            var contextMock = new Mock <HttpContextBase>();

            contextMock.SetupGet(ctx => ctx.User).Returns(userMock.Object);
            contextMock.SetupGet(ctx => ctx.Request).Returns(requestMock.Object);

            var controllerContextMock = new Mock <ControllerContext>();

            controllerContextMock.SetupGet(con => con.HttpContext).Returns(contextMock.Object);

            sac.ControllerContext = controllerContextMock.Object;
            var inputVM = new AddNewAdminViewModel();

            //Act
            var result = sac.AddAdmin(inputVM).Result;
            RedirectToRouteResult routeResult = result as RedirectToRouteResult;

            //Assert
            Assert.That(routeResult, Is.Not.Null);
            Assert.AreEqual(routeResult.RouteValues["action"], "Index");
            Assert.That(sac.TempData.ContainsKey("success"), Is.False);
        }
Пример #2
0
        public void AddAdmin_RequestNotAuthenticated_RedirectToLoginPage()
        {
            //Arrange
            System_AdminController sac = new System_AdminController();

            var requestMock = new Mock <HttpRequestBase>();

            requestMock.SetupGet(x => x.IsAuthenticated).Returns(false);

            var contextMock = new Mock <HttpContextBase>();

            contextMock.SetupGet(x => x.Request).Returns(requestMock.Object);

            sac.ControllerContext = new ControllerContext(contextMock.Object, new RouteData(), sac);
            var inputVM = new AddNewAdminViewModel();

            //Act
            var result = sac.AddAdmin(inputVM).Result;
            RedirectToRouteResult routeResult = result as RedirectToRouteResult;

            //Assers
            Assert.That(routeResult, Is.Not.Null);
            Assert.AreEqual(routeResult.RouteValues["action"], "Login");
            Assert.That(sac.TempData.ContainsKey("success"), Is.False);
        }
Пример #3
0
        public IActionResult AddNewAdmin(AddNewAdminViewModel input)
        {
            if (ModelState.IsValid)
            {
                string result = _userService.AddNewAdmin(input);

                if (result == "Succeeded")
                {
                    return(RedirectToAction("Index", "Home", new { message = "New admin has successfully been added" }));
                }

                return(RedirectToAction("AddNewAdmin", "Admin", new { input = input, message = "New admin has not been added" }));
            }

            return(View(input));
        }
Пример #4
0
        public void AddAdmin_AddLocationAdminAndSomeVMAttributesAreNull_RedirectToAddNewAdminPage()
        {
            //Arrange
            System_AdminController sac = new System_AdminController();

            var userMock = new Mock <IPrincipal>();

            userMock.Setup(p => p.IsInRole("System_Admin")).Returns(true);

            var requestMock = new Mock <HttpRequestBase>();

            requestMock.SetupGet(x => x.IsAuthenticated).Returns(true);

            var contextMock = new Mock <HttpContextBase>();

            contextMock.SetupGet(ctx => ctx.User).Returns(userMock.Object);
            contextMock.SetupGet(ctx => ctx.Request).Returns(requestMock.Object);

            var controllerContextMock = new Mock <ControllerContext>();

            controllerContextMock.SetupGet(con => con.HttpContext).Returns(contextMock.Object);

            sac.ControllerContext = controllerContextMock.Object;
            var inputVM = new AddNewAdminViewModel()
            {
                Admin_Type   = AdminType.LOCATION_ADMIN,
                Email        = "",
                Name         = null,
                LastName     = "",
                UserName     = null,
                MyLocationId = ""
            };

            //Act
            var result = sac.AddAdmin(inputVM).Result;
            RedirectToRouteResult routeResult = result as RedirectToRouteResult;

            //Assert
            Assert.That(routeResult, Is.Not.Null);
            Assert.AreEqual(routeResult.RouteValues["action"], "AddNewAdmin");
            Assert.AreEqual(sac.ModelState.Values.Count, 1);
            Assert.AreEqual(sac.ModelState.Values.ElementAt(0).Errors.ElementAt(0).ErrorMessage, "Error while trying to add new admin (some fields are null)");
        }
Пример #5
0
        public string AddNewAdmin(AddNewAdminViewModel viewModel)
        {
            bool userNameIsUnique = NewAdminIsValid(viewModel.Email);

            if (userNameIsUnique == true)
            {
                ApplicationUser newAdmin = new ApplicationUser();
                newAdmin.UserName = viewModel.Email;
                newAdmin.Email    = viewModel.Email;

                IdentityResult result = _userManager.CreateAsync(newAdmin, viewModel.Password).Result;

                if (result.Succeeded)
                {
                    _userManager.AddToRoleAsync(newAdmin, "Admin").Wait();
                }

                return("Succeeded" /*result.ToString()*/);
            }

            return("Failed");
        }
        public async Task <ActionResult> AddAdmin(AddNewAdminViewModel adminVM)
        {
            if (!Request.IsAuthenticated)
            {
                return(RedirectToAction("Login", "Account"));
            }
            else
            {
                if (!User.IsInRole("System_Admin"))
                {
                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    if (adminVM.Name != null && adminVM.LastName != null && adminVM.Email != null && adminVM.UserName != null)
                    {
                        Admin newAdmin = null;
                        if (adminVM.Admin_Type == AdminType.SYSTEM_ADMIN)
                        {
                            newAdmin = new SystemAdmin
                            {
                                Admin_Type  = adminVM.Admin_Type,
                                Name        = adminVM.Name,
                                LastName    = adminVM.LastName,
                                Email       = adminVM.Email,
                                UserName    = adminVM.UserName,
                                IsMainAdmin = false
                            };
                        }
                        else if (adminVM.Admin_Type == AdminType.FANZONE_ADMIN)
                        {
                            newAdmin = new FanZoneAdmin
                            {
                                Admin_Type     = adminVM.Admin_Type,
                                Name           = adminVM.Name,
                                LastName       = adminVM.LastName,
                                Email          = adminVM.Email,
                                UserName       = adminVM.UserName,
                                HasSetPassword = false
                            };
                        }
                        else if (adminVM.Admin_Type == AdminType.LOCATION_ADMIN)
                        {
                            if (adminVM.MyLocationId != null)
                            {
                                newAdmin = new LocationAdmin
                                {
                                    Admin_Type   = adminVM.Admin_Type,
                                    Name         = adminVM.Name,
                                    LastName     = adminVM.LastName,
                                    Email        = adminVM.Email,
                                    UserName     = adminVM.UserName,
                                    MyLocationId = adminVM.MyLocationId
                                };
                            }
                            else
                            {
                                ModelState.AddModelError("", "Error: Admin location is null.");
                                TempData["ModelState"] = ModelState;
                                return(RedirectToAction("AddNewAdmin", "System_Admin"));
                            }
                        }

                        if (newAdmin != null)
                        {
                            using (var um = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext())))
                            {
                                IdentityResult result;
                                if (um.Users.FirstOrDefault(usr => usr.Email == newAdmin.Email) == null)
                                {
                                    //RandomString()
                                    string newPassword = "******";
                                    result = await um.CreateAsync(newAdmin, newPassword);

                                    if (result.Succeeded)
                                    {
                                        if (adminVM.Admin_Type == AdminType.SYSTEM_ADMIN)
                                        {
                                            if (!um.IsInRole(newAdmin.Id, "System_Admin"))
                                            {
                                                var userResult = um.AddToRole(newAdmin.Id, "System_Admin");
                                                if (!userResult.Succeeded)
                                                {
                                                    ModelState.AddModelError("", "Adding user '" + newAdmin.UserName + "' to '" + "System_Admin" + "' role failed with error(s): " + userResult.Errors);
                                                    TempData["ModelState"] = ModelState;
                                                    return(RedirectToAction("AddNewAdmin", "System_Admin"));
                                                }
                                            }
                                        }
                                        else if (adminVM.Admin_Type == AdminType.FANZONE_ADMIN)
                                        {
                                            if (!um.IsInRole(newAdmin.Id, "Fanzone_Admin"))
                                            {
                                                var userResult = um.AddToRole(newAdmin.Id, "Fanzone_Admin");
                                                if (!userResult.Succeeded)
                                                {
                                                    ModelState.AddModelError("", "Adding user '" + newAdmin.UserName + "' to '" + "Fanzone_Admin" + "' role failed with error(s): " + userResult.Errors);
                                                    TempData["ModelState"] = ModelState;
                                                    return(RedirectToAction("AddNewAdmin", "System_Admin"));
                                                }
                                                else
                                                {
                                                    //email to [email protected] from the same address
                                                    var    fromAddress  = new MailAddress("*****@*****.**", "ISA NS");
                                                    var    toAddress    = new MailAddress("*****@*****.**", "ISA NS");
                                                    string fromPassword = "******";
                                                    string subject      = "Welcome to ISA2017 Cinemas";
                                                    string body         = "Hello new Fanzone admin!" + System.Environment.NewLine + "Your sign-in credentials are:" + System.Environment.NewLine + "Email: " + adminVM.Email + System.Environment.NewLine + "Password: "******"smtp.gmail.com",
                                                        Port                  = 587,
                                                        EnableSsl             = true,
                                                        DeliveryMethod        = SmtpDeliveryMethod.Network,
                                                        UseDefaultCredentials = false,
                                                        Credentials           = new NetworkCredential(fromAddress.Address, fromPassword)
                                                    };
                                                    using (var message = new MailMessage(fromAddress, toAddress)
                                                    {
                                                        Subject = subject,
                                                        Body = body
                                                    })
                                                    {
                                                        smtp.Send(message);
                                                    }
                                                }
                                            }
                                        }
                                        else if (adminVM.Admin_Type == AdminType.LOCATION_ADMIN)
                                        {
                                            if (!um.IsInRole(newAdmin.Id, "Location_Admin"))
                                            {
                                                var userResult = um.AddToRole(newAdmin.Id, "Location_Admin");
                                                if (!userResult.Succeeded)
                                                {
                                                    ModelState.AddModelError("", "Adding user '" + newAdmin.UserName + "' to '" + "Location_Admin" + "' role failed with error(s): " + userResult.Errors);
                                                    TempData["ModelState"] = ModelState;
                                                    return(RedirectToAction("AddNewAdmin", "System_Admin"));
                                                }
                                                else
                                                {
                                                    ApplicationDbContext ctx = new ApplicationDbContext();
                                                    var resLoc = ctx.Locations.FirstOrDefault(x => x.Id.ToString() == adminVM.MyLocationId);

                                                    if (resLoc != null)
                                                    {
                                                        resLoc.MyAdminId = newAdmin.Id;
                                                        ctx.SaveChanges();
                                                    }
                                                    else
                                                    {
                                                        um.RemoveFromRole(newAdmin.Id, "Location_Admin");
                                                        ModelState.AddModelError("", "Error: Given admin location is not found! Please try again.");
                                                        TempData["ModelState"] = ModelState;
                                                        return(RedirectToAction("AddNewAdmin", "System_Admin"));
                                                    }
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        ModelState.AddModelError("", "Error while trying to create new admin");
                                        TempData["ModelState"] = ModelState;
                                        return(RedirectToAction("AddNewAdmin", "System_Admin"));
                                    }
                                }
                                else
                                {
                                    ModelState.AddModelError("", "User with this email adress already exists");
                                    TempData["ModelState"] = ModelState;
                                    return(RedirectToAction("AddNewAdmin", "System_Admin"));
                                }
                            }
                        }
                        else
                        {
                            ModelState.AddModelError("", "Error while trying to add new admin (newAdmin is null)");
                            TempData["ModelState"] = ModelState;
                            return(RedirectToAction("AddNewAdmin", "System_Admin"));
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("", "Error while trying to add new admin (some fields are null)");
                        TempData["ModelState"] = ModelState;
                        return(RedirectToAction("AddNewAdmin", "System_Admin"));
                    }

                    TempData["success"] = "Succesfully added a new: " + adminVM.Admin_Type.ToString();
                    return(RedirectToAction("Index", "Home"));
                }
            }
        }