private UserRole CreateDefaultRole() { UserRole defaultRole = ObjectSpace.FindObject<UserRole>(new BinaryOperator("Name", "Default")); if(defaultRole == null) { defaultRole = ObjectSpace.CreateObject<UserRole>(); defaultRole.Name = "Default"; defaultRole.AddObjectPermission<PermissionPolicyUser>(SecurityOperations.Read, "[Oid] = CurrentUserId()", SecurityPermissionState.Allow); defaultRole.AddNavigationPermission(@"Application/NavigationItems/Items/Default/Items/MyDetails", SecurityPermissionState.Allow); defaultRole.AddMemberPermission<PermissionPolicyUser>(SecurityOperations.Write, "ChangePasswordOnFirstLogon", "[Oid] = CurrentUserId()", SecurityPermissionState.Allow); defaultRole.AddMemberPermission<PermissionPolicyUser>(SecurityOperations.Write, "StoredPassword", "[Oid] = CurrentUserId()", SecurityPermissionState.Allow); defaultRole.AddTypePermissionsRecursively<PermissionPolicyRole>(SecurityOperations.Read, SecurityPermissionState.Deny); defaultRole.AddTypePermissionsRecursively<ModelDifference>(SecurityOperations.ReadWriteAccess, SecurityPermissionState.Allow); defaultRole.AddTypePermissionsRecursively<ModelDifferenceAspect>(SecurityOperations.ReadWriteAccess, SecurityPermissionState.Allow); defaultRole.AddTypePermissionsRecursively<ModelDifference>(SecurityOperations.Create, SecurityPermissionState.Allow); defaultRole.AddTypePermissionsRecursively<ModelDifferenceAspect>(SecurityOperations.Create, SecurityPermissionState.Allow); } return defaultRole; }
public override void UpdateDatabaseAfterUpdateSchema() { base.UpdateDatabaseAfterUpdateSchema(); UpdateAnalysisCriteriaColumn(); #region Create a User for the Simple Security Strategy //// If a simple user named 'Sam' doesn't exist in the database, create this simple user //SecuritySimpleUser adminUser = ObjectSpace.FindObject<SecuritySimpleUser>(new BinaryOperator("UserName", "Sam")); //if(adminUser == null) { // adminUser = ObjectSpace.CreateObject<SecuritySimpleUser>(); // adminUser.UserName = "******"; //} //// Make the user an administrator //adminUser.IsAdministrator = true; //// Set a password if the standard authentication type is used //adminUser.SetPassword(""); #endregion #region Create Users for the Complex Security Strategy // If a user named 'Sam' doesn't exist in the database, create this user PermissionPolicyUser user1 = ObjectSpace.FindObject <PermissionPolicyUser>(new BinaryOperator("UserName", "Sam")); if (user1 == null) { user1 = ObjectSpace.CreateObject <PermissionPolicyUser>(); user1.UserName = "******"; // Set a password if the standard authentication type is used user1.SetPassword(""); } // If a user named 'John' doesn't exist in the database, create this user PermissionPolicyUser user2 = ObjectSpace.FindObject <PermissionPolicyUser>(new BinaryOperator("UserName", "John")); if (user2 == null) { user2 = ObjectSpace.CreateObject <PermissionPolicyUser>(); user2.UserName = "******"; // Set a password if the standard authentication type is used user2.SetPassword(""); } // If a role with the Administrators name doesn't exist in the database, create this role UserRole adminRole = ObjectSpace.FindObject <UserRole>(new BinaryOperator("Name", "Administrators")); if (adminRole == null) { adminRole = ObjectSpace.CreateObject <UserRole>(); adminRole.Name = "Administrators"; } adminRole.IsAdministrative = true; // If a role with the Users name doesn't exist in the database, create this role UserRole userRole = ObjectSpace.FindObject <UserRole>(new BinaryOperator("Name", "Users")); if (userRole == null) { userRole = ObjectSpace.CreateObject <UserRole>(); userRole.Name = "Users"; userRole.PermissionPolicy = SecurityPermissionPolicy.AllowAllByDefault; userRole.AddTypePermission <PermissionPolicyRole>(SecurityOperations.ReadWriteAccess, SecurityPermissionState.Allow); userRole.AddTypePermission <PermissionPolicyUser>(SecurityOperations.ReadWriteAccess, SecurityPermissionState.Allow); userRole.AddObjectPermission <PermissionPolicyUser>(SecurityOperations.ReadOnlyAccess, "[Oid] = CurrentUserId()", SecurityPermissionState.Allow); userRole.AddMemberPermission <PermissionPolicyUser>(SecurityOperations.Write, "ChangePasswordOnFirstLogon", null, SecurityPermissionState.Allow); userRole.AddMemberPermission <PermissionPolicyUser>(SecurityOperations.Write, "StoredPassword", null, SecurityPermissionState.Allow); userRole.AddTypePermission <PermissionPolicyRole>(SecurityOperations.ReadWriteAccess, SecurityPermissionState.Allow); userRole.AddTypePermission <PermissionPolicyTypePermissionObject>("Write;Delete;Navigate;Create", SecurityPermissionState.Deny); userRole.AddTypePermission <PermissionPolicyMemberPermissionsObject>("Write;Delete;Navigate;Create", SecurityPermissionState.Deny); userRole.AddTypePermission <PermissionPolicyObjectPermissionsObject>("Write;Delete;Navigate;Create", SecurityPermissionState.Deny); userRole.AddTypePermission <Contact>(SecurityOperations.ReadWriteAccess, SecurityPermissionState.Deny); userRole.AddTypePermission <Contact>("Delete;Navigate;Create", SecurityPermissionState.Allow); userRole.AddObjectPermission <Contact>(SecurityOperations.FullObjectAccess, "[UserRoles][].Count() = 0", SecurityPermissionState.Allow); userRole.AddObjectPermission <Contact>(SecurityOperations.ReadOnlyAccess, "StartsWith(FirstName, 'E')", SecurityPermissionState.Allow); userRole.AddObjectPermission <Contact>(SecurityOperations.FullObjectAccess, "UserRoles[Users[Oid = CurrentUserId()]]", SecurityPermissionState.Allow); //userRole.AddObjectPermission<Contact>(SecurityOperations.ReadWriteAccess, "\"bool\" : {\"must\" : [{\"terms\" : { \"userroles.name\" : ['users']}}]}", SecurityPermissionState.Allow); } // Add the Administrators role to the user1 user1.Roles.Add(adminRole); // Add the Users role to the user2 user2.Roles.Add(userRole); #endregion // PermissionPolicyRole defaultRole = CreateDefaultRole(); Position developerPosition = ObjectSpace.FindObject <Position>(CriteriaOperator.Parse("Title == 'Developer'")); if (developerPosition == null) { developerPosition = ObjectSpace.CreateObject <Position>(); developerPosition.Title = "Developer"; } Position managerPosition = ObjectSpace.FindObject <Position>(CriteriaOperator.Parse("Title == 'Manager'")); if (managerPosition == null) { managerPosition = ObjectSpace.CreateObject <Position>(); managerPosition.Title = "Manager"; } Department devDepartment = ObjectSpace.FindObject <Department>(CriteriaOperator.Parse("Title == 'Development Department'")); if (devDepartment == null) { devDepartment = ObjectSpace.CreateObject <Department>(); devDepartment.Title = "Development Department"; devDepartment.Office = "205"; devDepartment.Positions.Add(developerPosition); devDepartment.Positions.Add(managerPosition); } Department seoDepartment = ObjectSpace.FindObject <Department>(CriteriaOperator.Parse("Title == 'SEO'")); if (seoDepartment == null) { seoDepartment = ObjectSpace.CreateObject <Department>(); seoDepartment.Title = "SEO"; seoDepartment.Office = "703"; seoDepartment.Positions.Add(developerPosition); seoDepartment.Positions.Add(managerPosition); } ImageConverter imageConverter = new ImageConverter(); Contact contactMary = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Mary' && LastName == 'Tellitson'")); if (contactMary == null) { contactMary = ObjectSpace.CreateObject <Contact>(); contactMary.FirstName = "Mary"; contactMary.LastName = "Tellitson"; contactMary.NickName = "Emma"; contactMary.SpouseName = "Harry"; contactMary.Email = "*****@*****.**"; contactMary.Birthday = new DateTime(1980, 11, 27); contactMary.Department = devDepartment; contactMary.Notes = "In duties included control software components"; contactMary.Position = managerPosition; contactMary.Photo = (byte[])imageConverter.ConvertTo(ImageLoader.Instance.GetImageInfo("Tellitson_Mary_Photo").Image, typeof(byte[])); contactMary.UserRoles.Add(userRole); } Contact contactJohn = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'John' && LastName == 'Nilsen'")); if (contactJohn == null) { contactJohn = ObjectSpace.CreateObject <Contact>(); contactJohn.FirstName = "John"; contactJohn.LastName = "Nilsen"; contactJohn.NickName = "Eric"; contactJohn.SpouseName = "Emma Watson"; contactJohn.Email = "*****@*****.**"; contactJohn.Birthday = new DateTime(1981, 10, 3); contactJohn.Department = devDepartment; contactJohn.Position = developerPosition; contactJohn.Notes = "In duties included development of software modules"; contactJohn.Photo = (byte[])imageConverter.ConvertTo(ImageLoader.Instance.GetImageInfo("Nilsen_John_Photo").Image, typeof(byte[])); contactJohn.UserRoles.Add(userRole); contactJohn.UserRoles.Add(adminRole); } Contact contactJanete = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Janete' && LastName == 'Limeira'")); if (contactJanete == null) { contactJanete = ObjectSpace.CreateObject <Contact>(); contactJanete.TitleOfCourtesy = TitleOfCourtesy.Miss; contactJanete.FirstName = "Janete"; contactJanete.LastName = "Limeira"; contactJanete.NickName = "Dieter"; contactJanete.SpouseName = "Monika"; contactJanete.Email = "*****@*****.**"; contactJanete.Birthday = new DateTime(1981, 12, 21); contactJanete.Department = devDepartment; contactJanete.Position = managerPosition; contactJanete.Notes = "In duties included control software components"; contactJanete.Photo = (byte[])imageConverter.ConvertTo(ImageLoader.Instance.GetImageInfo("Limeira_Janete_Photo").Image, typeof(byte[])); contactJanete.UserRoles.Add(userRole); contactJanete.UserRoles.Add(adminRole); } Contact contactKarl = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Karl' && LastName == 'Jablonski'")); if (contactKarl == null) { contactKarl = ObjectSpace.CreateObject <Contact>(); contactKarl.FirstName = "Karl"; contactKarl.LastName = "Jablonski"; contactKarl.NickName = "Herbert"; contactKarl.SpouseName = "Erna"; contactKarl.Email = " [email protected]"; contactKarl.Birthday = new DateTime(1975, 12, 19); contactKarl.Department = devDepartment; contactKarl.Position = developerPosition; contactKarl.Manager = contactJanete; contactKarl.Notes = "In duties included development of software modules"; contactKarl.Photo = (byte[])imageConverter.ConvertTo(ImageLoader.Instance.GetImageInfo("Jablonski_Karl_Photo").Image, typeof(byte[])); contactKarl.UserRoles.Add(userRole); contactKarl.UserRoles.Add(adminRole); } Contact contactCatherine = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Catherine' && LastName == 'Dewey'")); if (contactCatherine == null) { contactCatherine = ObjectSpace.CreateObject <Contact>(); contactCatherine.TitleOfCourtesy = TitleOfCourtesy.Miss; contactCatherine.FirstName = "Catherine"; contactCatherine.LastName = "Dewey"; contactCatherine.NickName = "Frank"; contactCatherine.SpouseName = "Heike"; contactCatherine.Email = "*****@*****.**"; contactCatherine.Birthday = new DateTime(1993, 7, 9); contactCatherine.Department = seoDepartment; contactCatherine.Position = managerPosition; contactCatherine.Notes = "In duties included control software components"; contactCatherine.Photo = (byte[])imageConverter.ConvertTo(ImageLoader.Instance.GetImageInfo("Dewey_Catherine_Photo").Image, typeof(byte[])); contactCatherine.UserRoles.Add(adminRole); } Contact contactPaul = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Paul' && LastName == 'Henriot'")); if (contactPaul == null) { contactPaul = ObjectSpace.CreateObject <Contact>(); contactPaul.TitleOfCourtesy = TitleOfCourtesy.Mr; contactPaul.FirstName = "Paul"; contactPaul.LastName = "Henriot"; contactPaul.NickName = "Lukas"; contactPaul.SpouseName = "Christiana"; contactPaul.Email = "*****@*****.**"; contactPaul.Birthday = new DateTime(1958, 1, 30); contactPaul.Department = seoDepartment; contactPaul.Position = developerPosition; contactPaul.Notes = "In duties included development of software modules"; contactPaul.Photo = (byte[])imageConverter.ConvertTo(ImageLoader.Instance.GetImageInfo("Henriot_Paul_Photo").Image, typeof(byte[])); contactPaul.UserRoles.Add(userRole); contactPaul.UserRoles.Add(adminRole); } Contact contactElizabeth = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Elizabeth' && LastName == 'Lincoln'")); if (contactElizabeth == null) { contactElizabeth = ObjectSpace.CreateObject <Contact>(); contactElizabeth.TitleOfCourtesy = TitleOfCourtesy.Ms; contactElizabeth.FirstName = "Elizabeth"; contactElizabeth.LastName = "Lincoln"; contactElizabeth.NickName = "Que"; contactElizabeth.SpouseName = "Alen NIx"; contactElizabeth.Email = "*****@*****.**"; contactElizabeth.Birthday = new DateTime(1988, 3, 14); contactElizabeth.Department = seoDepartment; contactElizabeth.Position = managerPosition; contactElizabeth.Manager = contactCatherine; contactElizabeth.Notes = "In duties included control software components"; contactElizabeth.Photo = (byte[])imageConverter.ConvertTo(ImageLoader.Instance.GetImageInfo("Lincoln_Elizabeth_Photo").Image, typeof(byte[])); contactElizabeth.UserRoles.Add(userRole); contactElizabeth.UserRoles.Add(adminRole); } Contact contactDaniel = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Daniel' && LastName == 'Tonini'")); if (contactDaniel == null) { contactDaniel = ObjectSpace.CreateObject <Contact>(); contactDaniel.FirstName = "Daniel"; contactDaniel.LastName = "Tonini"; contactDaniel.NickName = "Alexander"; contactDaniel.SpouseName = "keth"; contactDaniel.Email = "*****@*****.**"; contactDaniel.Birthday = new DateTime(1980, 12, 30); contactDaniel.Department = seoDepartment; contactDaniel.Notes = "In duties included development of software modules"; contactDaniel.Position = developerPosition; contactDaniel.Manager = contactElizabeth; contactDaniel.Photo = (byte[])imageConverter.ConvertTo(ImageLoader.Instance.GetImageInfo("Tonini_Daniel_Photo").Image, typeof(byte[])); contactDaniel.UserRoles.Add(adminRole); } if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Review reports'")) == null) { DemoTask task = ObjectSpace.CreateObject <DemoTask>(); task.Subject = "Review reports"; task.AssignedTo = contactJohn; task.StartDate = DateTime.Parse("May 03, 2008"); task.DueDate = DateTime.Parse("September 06, 2008"); task.Status = DevExpress.Persistent.Base.General.TaskStatus.InProgress; task.Priority = Priority.High; task.EstimatedWork = 60; task.Description = "Analyse the reports and assign new tasks to employees."; } if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Fix breakfast'")) == null) { DemoTask task = ObjectSpace.CreateObject <DemoTask>(); task.Subject = "Fix breakfast"; task.AssignedTo = contactMary; task.StartDate = DateTime.Parse("May 03, 2008"); task.DueDate = DateTime.Parse("May 04, 2008"); task.Status = DevExpress.Persistent.Base.General.TaskStatus.Completed; task.Priority = Priority.Low; task.EstimatedWork = 1; task.ActualWork = 3; task.Description = "The Development Department - by 9 a.m.\r\nThe R&QA Department - by 10 a.m."; } if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Task1'")) == null) { DemoTask task = ObjectSpace.CreateObject <DemoTask>(); task.Subject = "Task1"; task.AssignedTo = contactJohn; task.StartDate = DateTime.Parse("June 03, 2008"); task.DueDate = DateTime.Parse("June 06, 2008"); task.Status = DevExpress.Persistent.Base.General.TaskStatus.Completed; task.Priority = Priority.High; task.EstimatedWork = 10; task.ActualWork = 15; task.Description = "A task designed specially to demonstrate the PivotChart module. Switch to the Reports navigation group to view the generated analysis."; } if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Task2'")) == null) { DemoTask task = ObjectSpace.CreateObject <DemoTask>(); task.Subject = "Task2"; task.AssignedTo = contactJohn; task.StartDate = DateTime.Parse("July 03, 2008"); task.DueDate = DateTime.Parse("July 06, 2008"); task.Status = DevExpress.Persistent.Base.General.TaskStatus.Completed; task.Priority = Priority.Low; task.EstimatedWork = 8; task.ActualWork = 16; task.Description = "A task designed specially to demonstrate the PivotChart module. Switch to the Reports navigation group to view the generated analysis."; } UpdateStatus("CreateAnalysis", "", "Creating analysis reports in the database..."); CreateDataToBeAnalysed(); UpdateStatus("CreateSecurityData", "", "Creating users and roles in the database..."); ObjectSpace.CommitChanges(); }