/// <summary> /// Обновим права администратора, для политики Windows Autentication пользователь с административными /// правами создается автоматически, а вот список прав не обновляется /// Паша!!! Реализация не учитывает вариантов в системе безопасности и использует стандартный класс роли /// или его производные /// </summary> private void UpdateAdminRole() { using (IObjectSpace os = ObjectSpace.CreateNestedObjectSpace()) { csCSecurityRole administratorRole = os.FindObject <csCSecurityRole>( new BinaryOperator("Name", SecurityStrategy.AdministratorRoleName), true); if (administratorRole == null) { administratorRole = os.CreateObject <csCSecurityRole>(); administratorRole.Name = SecurityStrategy.AdministratorRoleName; ModelOperationPermissionData modelPermission = os.CreateObject <ModelOperationPermissionData>(); administratorRole.PersistentPermissions.Add(modelPermission); } administratorRole.BeginUpdate(); administratorRole.Permissions.GrantRecursive(typeof(object), SecurityOperations.Read); administratorRole.Permissions.GrantRecursive(typeof(object), SecurityOperations.Write); administratorRole.Permissions.GrantRecursive(typeof(object), SecurityOperations.Create); administratorRole.Permissions.GrantRecursive(typeof(object), SecurityOperations.Delete); administratorRole.Permissions.GrantRecursive(typeof(object), SecurityOperations.Navigate); administratorRole.EndUpdate(); if (administratorRole.Users.Count == 0) { // Паша !!! Неустойчивый вариант, нужен код определяющий тип User по конфигу Application csCSecurityUser user = os.FindObject <csCSecurityUser>( new BinaryOperator("UserName", ConfigurationManager.AppSettings["DefaultAdminName"])); if (user != null) { user.Roles.Add(administratorRole); } } os.CommitChanges(); } }
public static void CreateComplexSecuritySystem() { Session session = XpoDefault.Session; SecurityRole administratorRole = session.FindObject<SecurityRole>( new BinaryOperator("Name", SecurityStrategy.AdministratorRoleName)); ModelOperationPermissionData modelPermission = new ModelOperationPermissionData(session); modelPermission.Save(); if (administratorRole == null) { administratorRole = new SecurityRole(session); administratorRole.Name = SecurityStrategy.AdministratorRoleName; administratorRole.BeginUpdate(); administratorRole.Permissions.GrantRecursive(typeof(object), SecurityOperations.Read); administratorRole.Permissions.GrantRecursive(typeof(object), SecurityOperations.Write); administratorRole.Permissions.GrantRecursive(typeof(object), SecurityOperations.Create); administratorRole.Permissions.GrantRecursive(typeof(object), SecurityOperations.Delete); administratorRole.Permissions.GrantRecursive(typeof(object), SecurityOperations.Navigate); administratorRole.EndUpdate(); administratorRole.PersistentPermissions.Add(modelPermission); administratorRole.Save(); } string adminName = "kenneth"; SecurityUser administratorUser = session.FindObject<SecurityUser>( new BinaryOperator("UserName", adminName)); if (administratorUser == null) { //administratorUser = session.CreateObject<SecurityUser>(); administratorUser = new SecurityUser(session); administratorUser.UserName = adminName; administratorUser.IsActive = true; administratorUser.SetPassword(""); administratorUser.Roles.Add(administratorRole); administratorUser.Save(); } }