Beispiel #1
0
 /// <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();
     }
 }
Beispiel #2
0
        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();
            }
        }