public void Can_retrieve_available_system_role_permissions()
        {
            var perms = new SystemRolePermissions();

            perms.Grant(SystemPermission.ManageSupplierAccounts);
            perms.Grant(SystemPermission.ViewFinancialDetails);

            Assert.IsTrue(perms.Has(SystemPermission.ManageSupplierAccounts));

            Assert.IsFalse(perms.Has(SystemPermission.CheckOutDocuments));
        }
        public void Can_add_a_system_role_permission()
        {
            var perms = new SystemRolePermissions();

            perms.Grant(SystemPermission.Administrator);

            Assert.IsTrue(perms.Has(SystemPermission.Administrator));
        }
        public void Administrator_system_role_permission_overrides_others()
        {
            var perms = new SystemRolePermissions();

            perms.Grant(SystemPermission.Administrator);

            Assert.IsTrue(perms.Has(SystemPermission.ManageSupplierAccounts));
            Assert.IsTrue(perms.Has(SystemPermission.ManageDocuments));
            Assert.IsTrue(perms.Has(SystemPermission.ManageCustomerAccounts));
            Assert.IsTrue(perms.Has(SystemPermission.CheckOutDocuments));
            Assert.IsTrue(perms.Has(SystemPermission.ManageParts));
            Assert.IsTrue(perms.Has(SystemPermission.ViewFinancialDetails));
        }
        private static void CreateAdminAccount()
        {
            using (var db = new ngenDbContext())
            {
                var emp = db.Employees.SingleOrDefault(e => e.UserName == "mr_robot");

                if (emp != null)
                {
                    return;
                }

                var role = new SystemRole
                {
                    Name        = "BUILTIN_ADMIN",
                    Description = "Built in administrator account. Has complete control of the entire system!"
                };

                var perms = new SystemRolePermissions();
                perms.Grant(SystemPermission.Administrator);

                role.Permissions = perms.ToBytes();

                var person = new Person
                {
                    FirstName   = "System",
                    LastName    = "Administrator",
                    DateOfBirth = DateTime.Today
                };

                var employee = new Employee
                {
                    UserName   = "******",
                    Password   = new BCryptPasswordProvider().HashPassword("correcthorsebatterystaple"),
                    IsActive   = true,
                    SystemRole = role,
                    Person     = person
                };

                db.SystemRoles.Add(role);
                db.People.Add(person);
                db.Employees.Add(employee);

                db.SaveChanges();

                Console.WriteLine();
                Console.WriteLine("Admin account created");
            }
        }