Przeglądaj źródła

[DOCUMENTATION] Russian:
- Sync with r20763

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@23630 44c647ce-9c0f-0410-b52a-842ac1e357ba

xerkus 15 lat temu
rodzic
commit
e808e10c18
1 zmienionych plików z 86 dodań i 62 usunięć
  1. 86 62
      documentation/manual/ru/module_specs/Zend_Acl.xml

+ 86 - 62
documentation/manual/ru/module_specs/Zend_Acl.xml

@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 20763 -->
 <!-- Reviewed: no -->
 <!-- Reviewed: no -->
 <sect1 id="zend.acl.introduction">
 <sect1 id="zend.acl.introduction">
     <title>Введение</title>
     <title>Введение</title>
@@ -6,50 +7,55 @@
     <para>
     <para>
         <classname>Zend_Acl</classname> предоставляет легковесную и гибкую реализацию списка прав
         <classname>Zend_Acl</classname> предоставляет легковесную и гибкую реализацию списка прав
         доступа (<acronym>ACL</acronym>) и управления привилегиями. Приложение может использовать
         доступа (<acronym>ACL</acronym>) и управления привилегиями. Приложение может использовать
-        такие списки для контроля доступа одних объектов к другим - защищенным.
+        <acronym>ACL</acronym> для контроля доступа одних объектов к другим - защищенным.
     </para>
     </para>
 
 
     <para>
     <para>
-        В рамках данной документации,
-        <itemizedlist>
-            <listitem>
-                <para>
-                    <emphasis>Ресурс</emphasis> - объект, доступ к
-                    которому контролируется.
-                </para>
-            </listitem>
-            <listitem>
-                <para>
-                    <emphasis>Роль</emphasis> - объект, который
-                    может запрашивать доступ к ресурсу.
-                </para>
-            </listitem>
-        </itemizedlist>
-
-        Говоря проще, <emphasis>роли запрашивают доступ к
-        ресурсам</emphasis>.
+        В рамках данной документации:
+    </para>
+
+    <itemizedlist>
+        <listitem>
+            <para>
+                <emphasis>Ресурс</emphasis> - объект, доступ к
+                которому контролируется.
+            </para>
+        </listitem>
+
+        <listitem>
+            <para>
+                <emphasis>Роль</emphasis> - объект, который
+                может запрашивать доступ к ресурсу.
+            </para>
+        </listitem>
+    </itemizedlist>
+
+    <para>
+        Говоря проще, <emphasis>роли запрашивают доступ к ресурсам</emphasis>.
         Например, если парковщик запрашивает доступ к автомобилю, то
         Например, если парковщик запрашивает доступ к автомобилю, то
         парковщик - это роль, а автомобиль - ресурс, поскольку доступ к
         парковщик - это роль, а автомобиль - ресурс, поскольку доступ к
         автомобилю не может предоставляться всем без исключения.
         автомобилю не может предоставляться всем без исключения.
     </para>
     </para>
 
 
     <para>
     <para>
-        Благодаря спецификации и использованию списка прав доступа (ACL)
+        Благодаря спецификации и использованию списка прав доступа (<acronym>ACL</acronym>)
         приложение может контролировать предоставление ролям доступа к ресурсам.
         приложение может контролировать предоставление ролям доступа к ресурсам.
     </para>
     </para>
 
 
     <sect2 id="zend.acl.introduction.resources">
     <sect2 id="zend.acl.introduction.resources">
         <title>Ресурсы</title>
         <title>Ресурсы</title>
         <para>
         <para>
-            Создать ресурс в <classname>Zend_Acl</classname> очень просто. <classname>Zend_Acl</classname> предоставляет
+            Создать ресурс в <classname>Zend_Acl</classname> очень просто.
+            <classname>Zend_Acl</classname> предоставляет
             интерфейс ресурса <classname>Zend_Acl_Resource_Interface</classname> для
             интерфейс ресурса <classname>Zend_Acl_Resource_Interface</classname> для
             облегчения процесса создания ресурса. Этот интерфейс содержит только
             облегчения процесса создания ресурса. Этот интерфейс содержит только
-            один метод, <code>getResourceId()</code>. Классу достаточно
-            реализовывать этот интерфейс для того, чтобы <classname>Zend_Acl</classname> рассматривал
-            объект этого класса как ресурс. Кроме того, <classname>Zend_Acl</classname>
-            предоставляет <code>Zend_Acl_Resource</code> в качестве базового
+            один метод, <methodname>getResourceId()</methodname>. Классу достаточно
+            реализовывать этот интерфейс для того, чтобы <classname>Zend_Acl</classname>
+            рассматривал объект этого класса как ресурс. Кроме того, <classname>Zend_Acl</classname>
+            предоставляет <classname>Zend_Acl_Resource</classname> в качестве базового
             класса, который разработчики могут расширять по желанию.
             класса, который разработчики могут расширять по желанию.
         </para>
         </para>
+
         <para>
         <para>
             <classname>Zend_Acl</classname> предоставляет древовидную структуру, в которую могут
             <classname>Zend_Acl</classname> предоставляет древовидную структуру, в которую могут
             добавляться различные ресурсы. В этой структуре они могут быть
             добавляться различные ресурсы. В этой структуре они могут быть
@@ -61,12 +67,13 @@
             правило должно действовать в каждом здании города, то проще
             правило должно действовать в каждом здании города, то проще
             прикрепить его к городу, чем крепить к каждому зданию в городе.
             прикрепить его к городу, чем крепить к каждому зданию в городе.
             Однако, для некоторых зданий могут потребоваться исключения из этого
             Однако, для некоторых зданий могут потребоваться исключения из этого
-            правила, в <classname>Zend_Acl</classname> это достигается путем закрепления исключений за
-            каждым зданием, требующим исключений из правила.
+            правила, в <classname>Zend_Acl</classname> это достигается путем закрепления исключений
+            за каждым зданием, требующим исключений из правила.
             Ресурс может наследовать только от одного родительского ресурса,
             Ресурс может наследовать только от одного родительского ресурса,
             однако сам родительский ресурс может,
             однако сам родительский ресурс может,
             в свою очередь, наследовать от другого родительского ресурса и т.д.
             в свою очередь, наследовать от другого родительского ресурса и т.д.
         </para>
         </para>
+
         <para>
         <para>
             <classname>Zend_Acl</classname> также поддерживает права доступа к ресурсам (например,
             <classname>Zend_Acl</classname> также поддерживает права доступа к ресурсам (например,
             "создание", "чтение", "обновление", "удаление"),
             "создание", "чтение", "обновление", "удаление"),
@@ -81,10 +88,12 @@
             Как и в случае с ресурсами, создавать роль тоже очень просто.
             Как и в случае с ресурсами, создавать роль тоже очень просто.
             Все роли должны реализовывать интерфейс
             Все роли должны реализовывать интерфейс
             <classname>Zend_Acl_Role_Interface</classname>. Этот интерфейс содержит
             <classname>Zend_Acl_Role_Interface</classname>. Этот интерфейс содержит
-            единственный метод <code>getRoleId()</code>. Кроме того, <classname>Zend_Acl</classname>
+            единственный метод <methodname>getRoleId()</methodname>. Кроме того,
+            <classname>Zend_Acl</classname>
             предоставляет <classname>Zend_Acl_Role</classname> в качестве базового класса,
             предоставляет <classname>Zend_Acl_Role</classname> в качестве базового класса,
             который разработчики могут расширять по желанию.
             который разработчики могут расширять по желанию.
         </para>
         </para>
+
         <para>
         <para>
             В <classname>Zend_Acl</classname> роль может наследовать от одной или от нескольких
             В <classname>Zend_Acl</classname> роль может наследовать от одной или от нескольких
             ролей. Это реализовано для поддержки
             ролей. Это реализовано для поддержки
@@ -96,27 +105,29 @@
             обоих ролей. Нет необходимости привязывать правила непосредственно
             обоих ролей. Нет необходимости привязывать правила непосредственно
             к "Салли".
             к "Салли".
         </para>
         </para>
+
         <para>
         <para>
             Хотя множественное наследование ролей - очень полезная возможность,
             Хотя множественное наследование ролей - очень полезная возможность,
             она также усложняет разработку. Следующий пример демонстрирует
             она также усложняет разработку. Следующий пример демонстрирует
             неопределенное условие и показывает, как <classname>Zend_Acl</classname> решает эту
             неопределенное условие и показывает, как <classname>Zend_Acl</classname> решает эту
             проблему.
             проблему.
         </para>
         </para>
+
         <example id="zend.acl.introduction.roles.example.multiple_inheritance">
         <example id="zend.acl.introduction.roles.example.multiple_inheritance">
             <title>Множественное наследование ролей</title>
             <title>Множественное наследование ролей</title>
             <para>
             <para>
                 Следующий код определяет три базовые роли:
                 Следующий код определяет три базовые роли:
-                "<code>guest</code>", "<code>member</code>" и
-                "<code>admin</code>", от которых будут наследовать другие роли.
-                Далее создается "<code>someUser</code>", он наследует от этих
+                "guest", "member" и
+                "admin", от которых будут наследовать другие роли.
+                Далее создается "someUser", он наследует от этих
                 только что созданных трех ролей. Порядок, в котором эти роли
                 только что созданных трех ролей. Порядок, в котором эти роли
                 появляются в массиве <varname>$parents</varname>,
                 появляются в массиве <varname>$parents</varname>,
                 важен. При необходимости <classname>Zend_Acl</classname> ищет правила доступа не
                 важен. При необходимости <classname>Zend_Acl</classname> ищет правила доступа не
                 только для запрашиваемых ролей (в нашем случае,
                 только для запрашиваемых ролей (в нашем случае,
-                "<code>someUser</code>"), но и для ролей, от которых
+                "someUser"), но и для ролей, от которых
                 запрашиваемая роль унаследована
                 запрашиваемая роль унаследована
-                (в нашем примере, "<code>guest</code>", "<code>member</code>" и
-                "<code>admin</code>"):
+                (в нашем примере, "guest", "member" и
+                "admin"):
             </para>
             </para>
             <programlisting language="php"><![CDATA[
             <programlisting language="php"><![CDATA[
 $acl = new Zend_Acl();
 $acl = new Zend_Acl();
@@ -137,31 +148,31 @@ echo $acl->isAllowed('someUser', 'someResource') ? 'разрешен' : 'зап
 ]]></programlisting>
 ]]></programlisting>
             <para>
             <para>
                 Поскольку нет правил, определенных специально для роли
                 Поскольку нет правил, определенных специально для роли
-                "<code>someUser</code>" и ресурса
-                "<code>someResource</code>", то <classname>Zend_Acl</classname> должен производить
+                "someUser" и ресурса
+                "someResource", то <classname>Zend_Acl</classname> должен производить
                 поиск правил, которые могут быть определены для ролей,
                 поиск правил, которые могут быть определены для ролей,
-                от которых "<code>someUser</code>" наследуется. Сперва
-                проверяется роль "<code>admin</code>", и обнаруживается, что
+                от которых "someUser" наследуется. Сперва
+                проверяется роль "admin", и обнаруживается, что
                 для нее не определены правила доступа. Затем проверяется роль
                 для нее не определены правила доступа. Затем проверяется роль
-                "<code>member</code>", и <classname>Zend_Acl</classname> обнаруживает, что есть правило
-                разрешающее доступ для "<code>member</code>" к
-                "<code>someResource</code>".
+                "member", и <classname>Zend_Acl</classname> обнаруживает, что есть правило
+                разрешающее доступ для "member" к
+                "someResource".
             </para>
             </para>
             <para>
             <para>
                 Если бы <classname>Zend_Acl</classname> продолжил поиск правил, определенных для
                 Если бы <classname>Zend_Acl</classname> продолжил поиск правил, определенных для
                 родительских ролей, то обнаружил бы, что для
                 родительских ролей, то обнаружил бы, что для
-                "<code>guest</code>" запрещен доступ к
-                "<code>someResource</code>". Это пример показывает противоречие,
-                так как теперь для "<code>someUser</code>" доступ к
-                "<code>someResource</code>" разрешен и запрещен одновременно.
+                "guest" запрещен доступ к
+                "someResource". Это пример показывает противоречие,
+                так как теперь для "someUser" доступ к
+                "someResource" разрешен и запрещен одновременно.
                 Конфликт произошел по причине наследования от нескольких ролей.
                 Конфликт произошел по причине наследования от нескольких ролей.
             </para>
             </para>
             <para>
             <para>
-                <classname>Zend_Acl</classname> решает эту неоднозначность, завершая запрос, как только
-                находит первое правило, которое может быть применено к запросу.
-                В этом случае, если роль "<code>member</code>"
-                проверяется раньше, чем роль "<code>guest</code>", то
-                данный пример выведет "<code>разрешен</code>".
+                <classname>Zend_Acl</classname> решает эту неоднозначность, завершая запрос, как
+                только находит первое правило, которое может быть применено к запросу.
+                В этом случае, если роль "member"
+                проверяется раньше, чем роль "guest", то
+                данный пример выведет "разрешен".
             </para>
             </para>
         </example>
         </example>
         <note>
         <note>
@@ -180,10 +191,10 @@ echo $acl->isAllowed('someUser', 'someResource') ? 'разрешен' : 'зап
             Список контроля доступа (<acronym>ACL</acronym>) может представлять собой любое
             Список контроля доступа (<acronym>ACL</acronym>) может представлять собой любое
             множество физических или виртуальных объектов. В целях
             множество физических или виртуальных объектов. В целях
             демонстрации, мы создадим базовый
             демонстрации, мы создадим базовый
-            функционал <acronym>ACL</acronym> для системы управления содержимым (<acronym>CMS</acronym>),
-            который будет поддерживать нескольких уровней групп к множеству
-            областей. Чтобы создать новый объект <acronym>ACL</acronym>, производим инстанцирование
-            без параметров:
+            функционал <acronym>ACL</acronym> для системы управления содержимым
+            (<acronym>CMS</acronym>), который будет поддерживать нескольких уровней групп к
+            множеству областей. Чтобы создать новый объект <acronym>ACL</acronym>, производим
+            инстанцирование <acronym>ACL</acronym> без параметров:
         </para>
         </para>
 
 
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
@@ -193,8 +204,8 @@ $acl = new Zend_Acl();
         <note>
         <note>
             <para>
             <para>
                 До тех пор, пока разработчик не определит какое-либо правило,
                 До тех пор, пока разработчик не определит какое-либо правило,
-                разрешающее доступ, <classname>Zend_Acl</classname> отказывает всем ролям в доступе ко
-                всем привилегиям на все ресурсы.
+                разрешающее доступ, <classname>Zend_Acl</classname> отказывает всем ролям в доступе
+                ко всем привилегиям на все ресурсы.
             </para>
             </para>
         </note>
         </note>
     </sect2>
     </sect2>
@@ -231,22 +242,27 @@ $acl = new Zend_Acl();
                 <entry>Права, унаследованные от</entry>
                 <entry>Права, унаследованные от</entry>
               </row>
               </row>
             </thead>
             </thead>
+
             <tbody>
             <tbody>
               <row>
               <row>
                 <entry>Гость (guest)</entry>
                 <entry>Гость (guest)</entry>
                 <entry>Просмотр (view)</entry>
                 <entry>Просмотр (view)</entry>
                 <entry>Не определено</entry>
                 <entry>Не определено</entry>
               </row>
               </row>
+
               <row>
               <row>
                 <entry>Сотрудник (staff)</entry>
                 <entry>Сотрудник (staff)</entry>
-                <entry>Редактирование (edit), предложение на публикацию (submit), исправление (revise)</entry>
+                <entry>Редактирование (edit), предложение на публикацию (submit), исправление
+                (revise)</entry>
                 <entry>Гость</entry>
                 <entry>Гость</entry>
               </row>
               </row>
+
               <row>
               <row>
                 <entry>Редактор (editor)</entry>
                 <entry>Редактор (editor)</entry>
                 <entry>Публикация (publish), архивирование (archive), удаление (delete)</entry>
                 <entry>Публикация (publish), архивирование (archive), удаление (delete)</entry>
                 <entry>Сотрудник</entry>
                 <entry>Сотрудник</entry>
               </row>
               </row>
+
               <row>
               <row>
                 <entry>Администратор (administrator)</entry>
                 <entry>Администратор (administrator)</entry>
                 <entry>(Обладает всеми правами)</entry>
                 <entry>(Обладает всеми правами)</entry>
@@ -304,6 +320,13 @@ $acl->addRole(new Zend_Acl_Role('administrator'));
             ресурсы и роли наследуют правила, которые определены для их предков.
             ресурсы и роли наследуют правила, которые определены для их предков.
         </para>
         </para>
 
 
+        <note>
+            <para>
+                В целом, <classname>Zend_Acl</classname> подчиняется правилу, только если более
+                точное правило не применимо.
+            </para>
+        </note>
+
         <para>
         <para>
             В результате мы можем определить умеренно сложный набор правил
             В результате мы можем определить умеренно сложный набор правил
             минимальным кодом. Чтобы определить базовые права доступа, описанные
             минимальным кодом. Чтобы определить базовые права доступа, описанные
@@ -330,10 +353,12 @@ $acl->allow($roleGuest, null, 'view');
 $acl->allow('guest', null, 'view');
 $acl->allow('guest', null, 'view');
 //*/
 //*/
 
 
-// Сотрудник наследует привилегии просмотра у Гостя, но также нуждается в дополнительных привилегиях
+// Сотрудник наследует привилегии просмотра у Гостя,
+// но также нуждается в дополнительных привилегиях
 $acl->allow('staff', null, array('edit', 'submit', 'revise'));
 $acl->allow('staff', null, array('edit', 'submit', 'revise'));
 
 
-// Редактор наследует привилегии просмотра, редактирования, отправки и исправлений у Посетителя
+// Редактор наследует привилегии просмотра, редактирования,
+// отправки и исправлений у Посетителя
 // но также нуждается в дополнительных привилегиях
 // но также нуждается в дополнительных привилегиях
 $acl->allow('editor', null, array('publish', 'archive', 'delete'));
 $acl->allow('editor', null, array('publish', 'archive', 'delete'));
 
 
@@ -342,7 +367,7 @@ $acl->allow('administrator');]]></programlisting>
 
 
         <para>
         <para>
             Значение <constant>NULL</constant> в вызовах
             Значение <constant>NULL</constant> в вызовах
-            <code>allow()</code> в этом примере используется для
+            <methodname>allow()</methodname> в этом примере используется для
             указания того, что правила, предоставляющие доступ,
             указания того, что правила, предоставляющие доступ,
             действительны для всех ресурсов.
             действительны для всех ресурсов.
         </para>
         </para>
@@ -356,7 +381,7 @@ $acl->allow('administrator');]]></programlisting>
             Теперь у нас есть гибкий <acronym>ACL</acronym>, который может использоваться для
             Теперь у нас есть гибкий <acronym>ACL</acronym>, который может использоваться для
             определения того, достаточно ли прав имеет запрашивающий, чтобы
             определения того, достаточно ли прав имеет запрашивающий, чтобы
             производить действия в веб-приложении. Используя метод
             производить действия в веб-приложении. Используя метод
-            <code>isAllowed()</code>, производить запросы довольно просто:
+            <methodname>isAllowed()</methodname>, производить запросы довольно просто:
         </para>
         </para>
 
 
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
@@ -392,7 +417,6 @@ echo $acl->isAllowed('administrator', null, 'update') ?
      "разрешен" : "запрещен";
      "разрешен" : "запрещен";
 // разрешен потому, что администратор обладает всеми привилегиями
 // разрешен потому, что администратор обладает всеми привилегиями
 ]]></programlisting>
 ]]></programlisting>
-
     </sect2>
     </sect2>
 </sect1>
 </sect1>
 <!--
 <!--