>>> Содержание <<<
Модуль policy.php
Общее описание
Содержит класс Policy, позволяющий осуществлять контроль доступа групп пользователей к функциям.
Методы класса Policy (class Policy extends ServiceMethods)
__construct(mysqli $dbLink)
Описание
Устанавливает соединение модуля с базой данных.
Принимаемые значения
dbLink - объект mysqli.
bool installPolicy(DOMDocument $policy, bool $validate = TRUE)
Описание
Устанавливает политики доступа плагина и описание этих политик.
Принимаемые значения
policy - объект DOMDocument, содержащий имя плагина, перечень его политик и описание этих политик.
Структура XML описывается следующей схемой RELAX NG:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 | <?xml version="1.0"?>
<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0" >
<start>
<element name="policy">
<attribute name="plugin"> <!-- короткое имя плагина -->
<ref name="plugFuncName" />
</attribute>
<zeroOrMore>
<element name="function"> <!-- политики доступа к функциям плагина -->
<attribute name="name"> <!-- имя функции -->
<ref name="plugFuncName" />
</attribute>
<attribute name="nonauth"> <!-- значение политики по умолчанию для пользователей, не прошедших аутентификацию -->
<choice>
<value>0</value>
<value>1</value>
</choice>
</attribute>
<attribute name="auth"> <!-- значение политики по умолчанию для групп пользователей -->
<choice>
<value>0</value>
<value>1</value>
</choice>
</attribute>
<oneOrMore>
<element name="description"> <!-- Описание политик -->
<attribute name="code"> <!-- код языка описания -->
<data type="string">
<param name="pattern">[a-z]{2}-[A-Z]{2}</param>
</data>
</attribute>
<element name="short">
<data type="string"> <!-- короткое описание -->
<param name="minLength">1</param>
<param name="maxLength">128</param>
</data>
</element>
<element name="detailed">
<data type="string"> <!-- детальное описание -->
<param name="minLength">0</param>
<param name="maxLength">1024</param>
</data>
</element>
</element>
</oneOrMore>
</element>
</zeroOrMore>
</element>
</start>
<define name="plugFuncName">
<data type="string">
<param name="pattern">[a-zA-Z0-9_]{3,30}</param>
</data>
</define>
</grammar>
|
validate - при значении TRUE производится предварительная проверка структуры DOM. При значении FALSE проверка не проводится.
Возвращаемые значения
В случае успешной установки возвращает TRUE, иначе FALSE.
bool delPolicy(string $plugin)
Описание
Удаляет политики по имени плагина.
Принимаемые значения
plugin - имя плагина, соответствующее шаблону [a-zA-Z\d_]{3,30}.
Возвращаемые значения
В случае успеха возвращает TRUE, иначе FALSE.
bool setFuncAccess(string $plugin, string $func, int $groupid, bool $access = TRUE)
Описание
Устанавливает значение доступа к функции плагина.
Принимаемые значения
plugin - имя плагина, соответствующее шаблону [a-zA-Z\d_]{3,30}.
func - имя функции плагина.
groupid - идентификатор группы, для которой задается значение доступа. Значение 0 соответствует неавторизованной сессии.
access - значение доступа. TRUE дает доступ, а FALSE запрещает.
Возвращаемые значения
В случае успеха возвращает TRUE, иначе FALSE.
DOMDocument / bool / array groupPolicyList(string $plugin, int $groupId, string $code = MECCANO_DEF_LANG)
Описание
Возвращает политики доступа по заданным плагину, идентификатору группы и языку.
Принимаемые значения
plugin - имя плагина, соответствующее шаблону [a-zA-Z\d_]{3,30}.
groupId - идентификатор группы. Значение 0 соответствует неавторизованной сессии.
code - код языка, соответствующий шаблону [a-z]{2}-[A-Z]{2}. Значение NULL приравнивается к MECCANO_DEF_LANG.
Возвращаемые значения
В случае успеха возвращает политики доступа в виде объекта DOMDocument, либо строки в формате JSON, иначе возвращает FALSE.
Структура JSON описывается следующей схемой JSON Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 | {
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"plugins": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,30}$"
},
"group": {
"type": "integer",
"minimum": 0
},
"functions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"short": {
"type": "string",
"maxLength": 128
},
"name": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,30}$"
},
"access": {
"type": "integer",
"minimum": 0,
"maximum": 1
}
},
"required": ["id", "short", "name", "access"]
}
}
},
"required": ["plugin", "group", "functions"]
}
|
Структура XML описывается следующей схемой RELAX NG:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 | <?xml version="1.0"?>
<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0" >
<start>
<element name="policy">
<attribute name="plugin"> <!-- имя плагина -->
<data type="string">
<param name="pattern">[a-zA-Z0-9_]{3,30}</param>
</data>
</attribute>
<attribute name="group"> <!-- идентификатор группы -->
<data type="nonNegativeInteger" />
</attribute>
<zeroOrMore>
<element name="function"> <!-- информация о функции -->
<element name="id"> <!-- идентификатор описания политики -->
<data type="positiveInteger" />
</element>
<element name="short"> <!-- короткое описание политики -->
<data type="string">
<param name="maxLength">128</param>
</data>
</element>
<element name="name"> <!-- имя функции -->
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,30}</param>
</data>
</element>
<element name="access"> <!-- значение доступа, 1 - есть доступ, 0 - нет доступа -->
<choice>
<value>0</value>
<value>1</value>
</choice>
</element>
</element>
</zeroOrMore>
</element>
</start>
</grammar>
|
Структура массива имеет вид подобный:
array('plugin' => "имя_плагина",
'group' => идентификатор_группы,
'functions' => array(
array('id' => идентификатор_описания_политики,
'short' => "короткое_описание_политики",
'name' => "имя_функции",
'access' => значение_доступа),
array(...),
...
)
)
DOMDocument / bool / array getPolicyDescById(int $id)
Описание
Возращает короткое и полное описание политики доступа по идентификатору.
Принимаемые значения
id - идентификатор описания политики.
Возвращаемые значения
В случае успеха возвращает описания политики в виде объекта DOMDocument, либо строки в формате JSON, иначе возвращает FALSE.
Структура JSON описывается следующей схемой JSON Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 | {
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"short": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"detailed": {
"type": "string",
"minLength": 0,
"maxLength": 1024
}
},
"required": ["short", "detailed"]
}
|
Структура XML описывается следующей схемой RELAX NG:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | <?xml version="1.0"?>
<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0" >
<start>
<element name="policy">
<element name="id"> <!-- идентификатор политики -->
<data type="positiveInteger" />
</element>
<element name="short"> <!-- короткое описание политики -->
<data type="string">
<param name="minLength">1</param>
<param name="maxLength">128</param>
</data>
</element>
<element name="detailed"> <!-- детальное описание политики -->
<data type="string">
<param name="minLength">0</param>
<param name="maxLength">1024</param>
</data>
</element>
</element>
</start>
</grammar>
|
Структура массива имеет вид подобный:
array(
'id' => идентификатор_политики,
'short' => "короткое_описание",
'detailed' => "детальное_описание"
)
void outputFormat(string $output = 'xml')
Описание
Устанавливает формат выводимых данных.
Принимаемые значения
output - может принимать значения json, или xml.
>>> Содержание <<<