19 include_once (
'Class.DbObj.php');
20 include_once (
'Class.QueryDb.php');
21 include_once (
'Class.Application.php');
22 include_once (
'Class.User.php');
42 create table acl (id int not null,
43 id_application int not null,
44 name varchar(30) not null,
45 grant_level int not null,
46 description varchar(100),
47 group_default varchar(1));
48 create index acl_idx1 on acl(id);
49 create index acl_idx2 on acl(id_application);
50 create index acl_idx3 on acl(name);
51 create sequence SEQ_ID_ACL;
57 $query->basic_elem->sup_where = array(
59 "id_application=$id_app"
61 $query->Query(0, 0,
"TABLE");
77 if ($this->
Exists($this->name, $this->id_application))
return "Acl {$this->name} already exists...";
78 $msg_res = $this->
exec_query(
"select nextval ('seq_id_acl')");
80 $this->
id = $arr[
"nextval"];
84 if ($this->dbid == - 1)
return FALSE;
90 $query->basic_elem->sup_where = array(
92 "id_application=$id_app"
94 $query->Query(0, 0,
"TABLE");
101 $query->basic_elem->sup_where = array(
106 while (list($k, $v) = each(
$list)) {
111 $permission =
new Permission($this->dbaccess);
112 $permission->DelAppPerm(
$id);
117 if (
sizeof($app_acl) == 0) {
118 $this->log->debug(
"No acl available");
122 $default_grant_level_found =
false;
123 if (isset($app_acl[0][
"grant_level"])) $oldacl =
true;
124 else $oldacl =
false;
126 $default_user_acl = array();
127 $default_acl =
false;
128 while (list($k, $tab) = each($app_acl)) {
129 $acl =
new Acl($this->dbaccess);
130 if ($acl->Exists($tab[
"name"],
$app->id)) {
131 $acl->Set($tab[
"name"],
$app->id);
133 $acl->id_application =
$app->id;
134 $acl->name = $tab[
"name"];
135 if (isset($tab[
"description"])) {
136 $acl->description = $tab[
"description"];
138 if (isset($tab[
"grant_level"])) {
139 $acl->grant_level = $tab[
"grant_level"];
141 $acl->grant_level = 1;
144 if ((isset($tab[
"group_default"])) && ($tab[
"group_default"] ==
"Y")) {
146 $default_grant_level = $tab[
"grant_level"];
147 $default_grant_level_found =
true;
149 $acl->group_default =
"Y";
152 $acl->group_default =
"N";
155 if ((!$default_grant_level_found) && ((!isset($smalestgrant)) || ($tab[
"grant_level"] < $smalestgrant)) && (!((isset($tab[
"admin"]) && $tab[
"admin"])))) {
157 $smalestgrant = $tab[
"grant_level"];
162 if ($acl->Exists($acl->name, $acl->id_application)) {
163 $this->log->info(
"Acl Modify : {$acl->name}, {$acl->description}");
166 $this->log->info(
"Acl Add : {$acl->name}, {$acl->description}");
169 if (isset($tab[
"admin"]) && $tab[
"admin"]) {
170 $permission =
new Permission($this->dbaccess);
171 $permission->id_user = 1;
172 $permission->id_application =
$app->id;
173 $permission->id_acl = $acl->id;
174 if ($permission->Exists($permission->id_user,
$app->id, $permission->id_acl)) {
175 $this->log->info(
"Modify admin permission : {$acl->name}");
176 $permission->Modify();
178 $this->log->info(
"Create admin permission : {$acl->name}");
183 $default_user_acl[] = $acl->id;
184 $default_acl =
false;
188 if (count($default_user_acl) == 0) {
189 if (isset($smalestgrant)) {
190 $default_user_acl[] = $smalestgrant;
191 $default_grant_level = $smalestgrant;
199 if (isset($default_grant_level)) {
201 $query->AddQuery(
"id_application = " .
$app->id);
202 $query->AddQuery(
"grant_level < $default_grant_level");
203 if ($qacl =
$query->Query()) {
204 while (list($k2, $acl) = each($qacl)) {
205 if (!in_array($acl->id, $default_user_acl)) {
206 $default_user_acl[] = $acl->id;
213 reset($default_user_acl);
214 while (list($ka, $aclid) = each($default_user_acl)) {
216 $defaultacl =
new Acl($this->dbaccess, $aclid);
217 $defaultacl->group_default =
"Y";
218 $defaultacl->Modify();
222 $permission =
new Permission($this->dbaccess);
223 $permission->id_user = 2;
224 $permission->id_application =
$app->id;
225 $permission->id_acl = $aclid;
226 if (!$permission->Exists($permission->id_user,
$app->id, $permission->id_acl)) {
268 $query->AddQuery(
"id_application = $idapp");
269 $query->AddQuery(
"group_default = 'Y'");
270 if ($qacl =
$query->Query()) {
271 while (list($k2, $acl) = each($qacl)) {
272 $aclids[] = $acl->id;
282 $query->AddQuery(
"id_application = $idapp");
283 if ($qacl =
$query->Query())
return $qacl;