Changeset 325
- Timestamp:
- 12/11/06 00:02:10 (2 years ago)
- Files:
-
- trunk/lib/jelix-modules/jxacl/classes/aclservice.class.php (modified) (1 diff)
- trunk/lib/jelix-modules/jxacl/controllers/admin.jsonrpc.php (modified) (3 diffs)
- trunk/lib/jelix-modules/jxacl/templates/xuladmin.tpl (modified) (12 diffs)
- trunk/lib/jelix-modules/jxauth/controllers/login.classic.php (modified) (1 diff)
- trunk/lib/jelix-modules/jxauth/plugins/auth/auth.plugin.php (modified) (1 diff)
- trunk/lib/jelix-www/xul/jxbl.xml (modified) (1 diff)
- trunk/lib/jelix/acl/jAclManager.class.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/jelix-modules/jxacl/classes/aclservice.class.php
r323 r325 18 18 $sql = 'SELECT s.id_aclsbj, s.id_aclvalgrp, s.label_key, r.value as right_value, r.id_aclres, 19 19 rv.label_key label_value, rv.value value 20 FROM jacl_right_values rv, jacl_subject s LEFT JOIN jacl_rights r 21 ON (s.id_aclsbj = r.id_aclsbj AND r.id_aclgrp ='.intval($grpid).' AND rv.value=r.value) 22 WHERE rv.id_aclvalgrp = s.id_aclvalgrp'; 20 FROM jacl_right_values rv 21 INNER JOIN jacl_subject s ON rv.id_aclvalgrp = s.id_aclvalgrp 22 LEFT JOIN jacl_rights r 23 ON (s.id_aclsbj = r.id_aclsbj AND r.id_aclgrp ='.intval($grpid).' AND rv.value=r.value) 24 ORDER BY s.id_aclsbj'; 23 25 $cnx = jDb::getConnection(); 24 26 trunk/lib/jelix-modules/jxacl/controllers/admin.jsonrpc.php
r318 r325 3 3 * @package jelix-modules 4 4 * @subpackage jxacl 5 * @version $Id$6 5 * @author Jouanneau Laurent 7 6 * @contributor … … 17 16 function saveright() { 18 17 $rep = $this->getResponse('jsonrpc'); 19 if(!jAclManager::setRight($this->param('groupid'), $this->param('subject'), 20 $this->param('rightvalue') , $this->param('ressource'))){ 21 $rep->response='BAD'; 22 }else 23 $rep->response='OK'; 18 $idgroup = $this->param('groupid'); 19 $rights = $this->param('rightvalues'); 20 foreach($rights as $r){ 21 if($r['newvalue'] == 'true'){ 22 jAclManager::addRight($idgroup, $r['subject'], $r['right'], $r['res']); 23 }else{ 24 jAclManager::removeRight($idgroup, $r['subject'], $r['right'], $r['res']); 25 } 26 } 27 $rep->response='OK'; 24 28 return $rep; 25 29 } … … 63 67 } 64 68 69 function addusertogrp(){ 70 $rep = $this->getResponse('jsonrpc'); 71 $id=$this->param('groupid'); 72 $login=$this->param('user'); 73 $user= jAuth::getUser($login); 74 if($user === null){ 75 $rep->response = 'UNKNOW_LOGIN'; 76 return $rep; 77 } 78 if($id ==''){ 79 $rep->response = 'NOID'; 80 return $rep; 81 } 82 try { 83 $id = jAclUserGroup::addUserToGroup($login, $id); 84 $rep->response = 'OK'; 85 }catch(Exception $e){ 86 $rep->response = 'BADLOGIN'; 87 } 88 return $rep; 89 } 90 91 function removeuserfromgrp(){ 92 $rep = $this->getResponse('jsonrpc'); 93 $id=$this->param('groupid'); 94 $login=$this->param('userdel'); 95 if($id ==''){ 96 $rep->response = 'NOID'; 97 return $rep; 98 } 99 try { 100 $id = jAclUserGroup::removeUserFromGroup($login, $id); 101 $rep->response = 'OK'; 102 }catch(Exception $e){ 103 $rep->response = 'BADLOGIN'; 104 } 105 return $rep; 106 } 65 107 } 66 108 ?> trunk/lib/jelix-modules/jxacl/templates/xuladmin.tpl
r323 r325 18 18 19 19 <script type="application/x-javascript"><![CDATA[ 20 21 {literal} 22 var gCurrentRight = {}; 20 {literal} 23 21 var gGroupList; 24 22 … … 38 36 pager.setAttribute('datasourceurl',''); 39 37 pager.loadCount(); 40 } 41 42 function selectRightForm(idvalgrp, rightvalue){ 43 38 document.getElementById('newname').setAttribute('value',''); 44 39 } 45 40 46 41 function changeGroup( idgroup ){ 47 42 if( idgroup!= ''){ 48 {/literal}43 {/literal} 49 44 var righturl={urljsstring 'jxacl~admin_rightslist@rdf',array(),array('grpid'=>'idgroup','__rnd'=>'Math.random()')}; 50 var usersurl={urljsstring 'jxacl~admin_userslist@rdf',array('offset'=>'__OFFSET__','count'=>'__COUNT__'),array('grpid'=>'idgroup','__rnd'=>'Math.random()')}; 51 var counturl={urljsstring 'jxacl~admin_usersgcount@classic',array(),array('grpid'=>'idgroup','__rnd'=>'Math.random()')}; 52 {literal} 45 {literal} 53 46 document.getElementById('rights').setAttribute("datasources",""); 54 47 document.getElementById('rights').setAttribute("datasources",righturl); 55 48 document.getElementById('groupstatus').removeAttribute('disabled'); 56 var pager = document.getElementById('userspager'); 57 pager.setAttribute('counturl',counturl); 58 pager.setAttribute('datasourceurl',usersurl); 59 pager.loadCount(); 49 document.getElementById('newname').setAttribute('value',''); 50 refreshUserList(idgroup); 60 51 }else{ 61 52 disableAll(); 62 53 } 63 54 document.getElementById('groupname').setAttribute('value',gGroupList.selectedItem.label); 64 gCurrentRight = {};65 55 } 66 56 … … 70 60 } 71 61 72 function removeUserFromGrp ( tree) {62 function removeUserFromGrp () { 73 63 if (confirm('Etes vous s� vouloir supprimer cet Utilisateur ?')) { 64 var tree = document.getElementById('users'); 74 65 var idx = tree.view.selection.currentIndex; 75 myuser = tree.view.getCellText(idx, tree.columns.getNamedColumn ( "logins-col")); 76 document.getElementById('deluser').setAttribute('value',myuser); 77 document.getElementById('removeuserfromgrp').submit(); 66 var myuser = tree.view.getCellText(idx, tree.columns.getNamedColumn ( "logins-col")); 67 document.getElementById('userdel').setAttribute('value', myuser); 68 var frm = document.getElementById('removeuserfromgrp'); 69 frm.submit(); 78 70 } 79 71 } … … 81 73 82 74 function onSubjectSelect(tree){ 83 var idx = tree.view.selection.currentIndex; 84 /*if(idx == -1){ 85 gCurrentRight = {}; 86 }else{ 87 88 gCurrentRight.rightvalue= tree.view.getCellText(idx, tree.columns.getNamedColumn ( "value-col")); 89 gCurrentRight.id_aclvalgrp = tree.view.getCellText(idx, tree.columns.getNamedColumn ( "id_aclvalgrp-col")); 90 gCurrentRight.id_aclsbj = tree.view.getCellText(idx, tree.columns.getNamedColumn ( "id_aclsbj-col")); 91 gCurrentRight.id_aclres = tree.view.getCellText(idx, tree.columns.getNamedColumn ( "res-col")); 92 }*/ 93 } 94 95 75 } 76 77 var gModifiedRights = []; 78 79 function onRightChange(ev, tree){ 80 81 var row = {}, col = {}, childElt = {}; 82 83 tree.treeBoxObject.getCellAt(ev.clientX, ev.clientY, row, col, childElt); 84 85 row = row.value; 86 col = col.value; 87 childElt = childElt.value; 88 if(col == null || row == null || childElt == null) return; 89 90 if(col.type == Components.interfaces.nsITreeColumn.TYPE_CHECKBOX) { 91 if(tree.view.getLevel(row) == 1){ 92 var resCol = tree.view.getCellText(row,tree.treeBoxObject.columns.getNamedColumn ("res-col")); 93 var valueCol = tree.view.getCellText(row,tree.treeBoxObject.columns.getNamedColumn ("value-col")); 94 var idAclValGrpCol = tree.view.getCellText(row,tree.treeBoxObject.columns.getNamedColumn ("id_aclvalgrp-col")); 95 var idAclSbjCol = tree.view.getCellText(row,tree.treeBoxObject.columns.getNamedColumn ("id_aclsbj-col")); 96 var etat = tree.view.getCellValue(row, col); 97 for(var i=0; i < gModifiedRights.length; i++){ 98 var e = gModifiedRights[i]; 99 if(e.res == resCol 100 && e.right == valueCol 101 && e.subject == idAclSbjCol){ 102 gModifiedRights.splice(i,1); 103 return; 104 } 105 } 106 gModifiedRights.push({ res: resCol, right: valueCol, subject: idAclSbjCol, newvalue: etat }); 107 } 108 } 109 } 96 110 97 111 function onRightsFormSubmit(form){ 98 /*var deck=document.getElementById("rightsforms"); 99 if(deck.selectedIndex!=0){ 100 var chks = deck.selectedPanel.getElementsByTagName("checkbox"); 101 var chkvalue, value=0; 102 for(var j=0; j < chks.length; j++){ 103 if(chks[j].checked){ 104 value = value | parseInt(chks[j].getAttribute('rightvalue')); 105 } 106 } 107 form.formDatas.rightvalue=value; 108 form.formDatas.subject= gCurrentRight.id_aclsbj; 109 form.formDatas.ressource= gCurrentRight.id_aclres; 110 return true; 111 }else{ 112 return false; 113 }*/ 114 112 form.formDatas.rightvalues=gModifiedRights; 113 return true; 115 114 } 116 115 … … 125 124 gGroupList.selectedIndex=0; 126 125 gGroupList.removeItemAt(i); 127 disableAll();126 changeGroup(''); 128 127 } 129 128 … … 133 132 } 134 133 135 function onAddUserGroup( form,idgroup){134 function onAddUserGroup(){ 136 135 document.getElementById('user').value=''; 137 document.getElementById('user2').value=''; 138 {/literal} 139 var usersurl={urljsstring 'jxacl~admin_userslist@rdf',array('offset'=>'0','count'=>'10'),array('grpid'=>'idgroup','__rnd'=>'Math.random()')}; 136 refreshUserList(gGroupList.selectedItem.value); 137 } 138 139 function onRemoveUserGroup(){ 140 refreshUserList(gGroupList.selectedItem.value); 141 } 142 143 function refreshUserList(idgroup){ 144 {/literal} 140 145 var counturl={urljsstring 'jxacl~admin_usersgcount@classic',array(),array('grpid'=>'idgroup','__rnd'=>'Math.random()')}; 141 {literal} 146 var usersurl={urljsstring 'jxacl~admin_userslist@rdf',array('offset'=>'__OFFSET__','count'=>'__COUNT__'),array('grpid'=>'idgroup','__rnd'=>'Math.random()')}; 147 {literal} 142 148 var pager = document.getElementById('userspager'); 143 149 pager.setAttribute('counturl',counturl); 144 pager.setAttribute('datasourceurl','');145 150 pager.setAttribute('datasourceurl',usersurl); 146 151 pager.loadCount(); 147 152 } 148 149 function onRemoveUserGroup(form,idgroup){ 150 document.getElementById('user').value=''; 151 {/literal} 152 var usersurl={urljsstring 'jxacl~admin_userslist@rdf',array('offset'=>'0','count'=>'10'),array('grpid'=>'idgroup','__rnd'=>'Math.random()')}; 153 var counturl={urljsstring 'jxacl~admin_usersgcount@classic',array(),array('grpid'=>'idgroup','__rnd'=>'Math.random()')}; 154 {literal} 155 var pager = document.getElementById('userspager'); 156 pager.setAttribute('counturl',counturl); 157 pager.setAttribute('datasourceurl',''); 158 pager.setAttribute('datasourceurl',usersurl); 159 pager.loadCount(); 160 } 161 {/literal} 153 {/literal} 162 154 ]]></script> 163 155 … … 195 187 onerror="alert(this.httpreq.responseText);" 196 188 /> 197 < !--<jx:submission id="rightsform" action="{jurl '@jsonrpc'}" method="POST"189 <jx:submission id="rightsform" action="{jurl '@jsonrpc'}" method="POST" 198 190 format="json-rpc" rpcmethod="jxacl~admin_saveright" 199 191 onsubmit="onRightsFormSubmit(this)" 200 onresult=" reloadRights()"192 onresult="gModifiedRights = []" 201 193 onhttperror="alert('erreur http :' + event.errorCode)" 202 194 oninvalidate="alert('erreur de saisie')" 203 195 onrpcerror="alert('rpcerror:\n'+this.jsonResponse.error.toSource())" 204 196 onerror="alert('error:\n'+this.httpreq.responseText);" 205 /> -->197 /> 206 198 <jx:submission id="addusertogrpform" 207 199 action="{jurl '@jsonrpc'}" … … 210 202 rpcmethod="jxacl~admin_addusertogrp" 211 203 onsubmit="" 212 onresult="onAddUserGroup( this,document.getElementById('groupid').selectedItem.value)"204 onresult="onAddUserGroup()" 213 205 onhttperror="alert('erreur http :' + event.errorCode)" 214 206 oninvalidate="alert('Saisissez correctement le nouveau nom')" 215 207 onrpcerror="alert(this.jsonResponse.error.toSource())" 216 208 onerror="alert(this.httpreq.responseText);"/> 209 210 <jx:submission id="removeuserfromgrp" 211 action="{jurl '@jsonrpc'}" 212 method="POST" 213 format="json-rpc" 214 rpcmethod="jxacl~admin_removeuserfromgrp" 215 onsubmit="" 216 onresult="onRemoveUserGroup()" 217 onhttperror="alert('erreur http :' + event.errorCode)" 218 oninvalidate="alert('Utilisateur Incorrect')" 219 onrpcerror="alert(this.jsonResponse.error.toSource())" 220 onerror="alert(this.httpreq.responseText);"/> 221 217 222 218 223 <description class="title-page">Gestion des droits</description> 219 224 <hbox flex="1" align="stretch" > 220 225 <vbox class="content-cols" style="width: 200px;"> 221 <jx:jbox title="Traitement des Groupes:"> 222 <label control="groupid" value="S�ctionner un groupe :"/> 223 <menulist id="groupid" name="groupid" required="true" 224 form="renameform,deleteform,rightsform,addusertogrp,removeuserfromgrp,addusertogrpform" 225 oncommand="changeGroup(this.selectedItem.value)"> 226 <menupopup> 227 <menuitem label="--" value="" /> 228 {foreach $groups as $grp} 229 <menuitem label="{$grp->name|escxml}" value="{$grp->id_aclgrp}"/> 230 {/foreach} 231 </menupopup> 232 </menulist> 233 234 <groupbox submit="newgrpsubmit"> 235 <label control="newgroup" value="Ajouter un groupe :"/> 236 <textbox id="newgroup" name="groupname" value="" required="true" form="newgrpform" /> 237 <jx:submit id="newgrpsubmit" form="newgrpform" label="Cr�"/> 238 </groupbox> 239 240 <groupbox submit="deletesubmit"> 241 <caption label="Suppression du groupe"/> 242 <label observes="groupname"/> 243 <jx:submit id="deletesubmit" form="deleteform" label="Supprimer" observes="groupstatus"/> 244 </groupbox> 245 246 <groupbox submit="renamesubmit"> 247 <caption label="Renommage du groupe"/><label observes="groupname"/> 248 <hbox align="center" pack="start"><label control="newname" value="Nouveau nom:"/> 249 <textbox id="newname" name="newname" value="" required="true" form="renameform" observes="groupstatus" /> 250 <jx:submit id="renamesubmit" form="renameform" label="Renommer" observes="groupstatus"/></hbox> 251 </groupbox> 252 253 </jx:jbox> 254 226 <label control="groupid" value="S�ctionner un groupe :"/> 227 <menulist id="groupid" name="groupid" required="true" 228 form="renameform,deleteform,rightsform,addusertogrp,removeuserfromgrp,addusertogrpform" 229 oncommand="changeGroup(this.selectedItem.value)"> 230 <menupopup> 231 <menuitem label="--" value="" /> 232 {foreach $groups as $grp} 233 <menuitem label="{$grp->name|escxml}" value="{$grp->id_aclgrp}"/> 234 {/foreach} 235 </menupopup> 236 </menulist> 237 238 <groupbox submit="newgrpsubmit"> 239 <label control="newgroup" value="Ajouter un groupe :"/> 240 <textbox id="newgroup" name="groupname" value="" required="true" form="newgrpform" /> 241 <jx:submit id="newgrpsubmit" form="newgrpform" label="Cr�"/> 242 </groupbox> 243 244 <groupbox submit="deletesubmit"> 245 <caption label="Suppression du groupe"/> 246 <label observes="groupname"/> 247 <jx:submit id="deletesubmit" form="deleteform" label="Supprimer" observes="groupstatus"/> 248 </groupbox> 249 250 <groupbox submit="renamesubmit"> 251 <caption label="Renommage du groupe"/><label observes="groupname"/> 252 <hbox align="center" pack="start"><label control="newname" value="Nouveau nom:"/> 253 <textbox id="newname" name="newname" value="" required="true" form="renameform" observes="groupstatus" /> 254 <jx:submit id="renamesubmit" form="renameform" label="Renommer" observes="groupstatus"/></hbox> 255 </groupbox> 255 256 </vbox> 256 257 257 258 258 <vbox class="content-cols" flex="1"> … … 263 263 </tabs> 264 264 <tabpanels flex="1"> 265 <tabpanel >266 <tree id="rights" ref="urn:data:row" width="500" datasources="rdf:null"267 on select="onSubjectSelect(this)" seltype="single" editable="true">265 <tabpanel orient="vertical"> 266 <tree id="rights" ref="urn:data:row" flex="1" width="500" datasources="rdf:null" 267 onclick="onRightChange(event,this)" seltype="single" editable="true"> 268 268 <treecols> 269 269 <treecol id="rights-col" label="Droits" primary="true" flex="2" … … 316 316 </template> 317 317 </tree> 318 <hbox><jx:submit form="rightsform" label="Enregistrer" observes="groupstatus"/></hbox> 318 319 </tabpanel> 319 320 <tabpanel orient="vertical"> 320 321 <popupset> 321 322 <popup id="addUserMenu"> 322 <menuitem label="Ajouter un Utilisateur" onclick="document.getElementById('user').focus();"/>323 <menuitem label="Supprimer cet Utilisateur" onclick="removeUserFromGrp(document.getElementById('users'));"/>323 <menuitem label="Ajouter un Utilisateur" oncommand="document.getElementById('user').focus();"/> 324 <menuitem label="Supprimer cet Utilisateur" oncommand="removeUserFromGrp();"/> 324 325 </popup> 325 326 </popupset> … … 347 348 <groupbox submit="addusersubmit"> 348 349 <caption label="Ajouter un Utilisateur :"/> 349 <textbox id="user" name="user" value="" required="true" form="addusertogrpform" observes="groupstatus"/> 350 <jx:submit id="addusersubmit" form="addusertogrpform" label="Ajouter" observes="groupstatus"/> 351 </groupbox> 352 350 <hbox> 351 <textbox id="user" name="user" value="" required="true" form="addusertogrpform" observes="groupstatus"/> 352 <jx:submit id="addusersubmit" form="addusertogrpform" label="Ajouter" observes="groupstatus"/> 353 </hbox> 354 </groupbox> 355 <html:input type="hidden" id="userdel" name="userdel" required="true" form="removeuserfromgrp" /> 353 356 </tabpanel> 354 357 </tabpanels> … … 356 359 </vbox> 357 360 </hbox> 358 359 <!--360 <jx:modalboxes>361 362 <jx:modalbox id="jxaclModalBox2" pack="center" orient="vertical" align="center" hidden="true">363 <box class="notifyBox" orient="horizontal" align="stretch" pack="start" njFormBoxParent="jxaclNotifyBox1">364 <jx:submission id="removeuserfromgrp"365 action="{jurl '@jsonrpc'}"366 method="POST"367 format="json-rpc"368 rpcmethod="jxacl~admin_removeuserfromgrp"369 onsubmit="return confirm('Etes vous sûr de vouloir supprimer cet Utilisateur ?')"370 onresult="onRemoveUserGroup(this,document.getElementById('groupid').selectedItem.value)"371 onhttperror="alert('erreur http :' + event.errorCode)"372 oninvalidate="alert('Utilisateur Incorrect')"373 onrpcerror="alert(this.jsonResponse.error.toSource())"374 onerror="alert(this.httpreq.responseText);"/>375 <textbox id="deluser" name="deluser" value="" required="true" form="removeuserfromgrp"/>376 <jx:submit id="removeusersubmit" form="removeuserfromgrp" label="Supprimer" observes="groupstatus"/>377 </box>378 </box>379 380 </jx:modalboxes>381 -->trunk/lib/jelix-modules/jxauth/controllers/login.classic.php
r318 r325 28 28 function in (){ 29 29 $conf = $GLOBALS['gJCoord']->getPlugin ('auth')->config; 30 30 $url_return = '/'; 31 31 if (!($conf['enable_after_login_override'] && $url_return= $this->param('auth_url_return'))){ 32 32 $url_return = jUrl::get($conf['after_login']); trunk/lib/jelix-modules/jxauth/plugins/auth/auth.plugin.php
r259 r325 74 74 if($needAuth){ 75 75 if($notLogged){ 76 if($this->config['on_error'] == 1 || !$GLOBALS['gJCoord']->request->isAllowedResponse('jResponseRedirect')){ 76 if($this->config['on_error'] == 1 77 || !$GLOBALS['gJCoord']->request->isAllowedResponse('jResponseRedirect')){ 77 78 trigger_error(jLocale::get($this->config['error_message']), E_USER_ERROR); 78 79 exit; trunk/lib/jelix-www/xul/jxbl.xml
r307 r325 239 239 </method> 240 240 </implementation> 241 <!--<handlers> 242 <handler event="DOMAttrModified" phase="target"> 243 <![CDATA[ 244 var attrName = event.attrName.toLowerCase(); 245 var oldValue = event.prevValue.toLowerCase(); 246 var newValue = event.newValue.toLowerCase(); 247 if (oldValue != newValue && newValue) { 248 if (attrName == "counturl") { 249 this.loadCount(); 250 } else if (attrName == "datasourceurl") { 251 this.loadCount(); 252 } else if (attrName == "increment") { 253 this.show(); 254 } 255 } 256 ]]> 257 </handler> 258 </handlers>--> 259 260 </binding> 241 </binding> 261 242 262 243 <binding id="jbox" extends="xul:box"> trunk/lib/jelix/acl/jAclManager.class.php
r323 r325 26 26 27 27 /** 28 * specify the value ofa right on the given subject/group/resource28 * add a right on the given subject/group/resource 29 29 * @param int $group the group id. 30 * @param string $subject the key of the subject to check31 * @param string |array$value the value of the right30 * @param string $subject the key of the subject 31 * @param string $value the value of the right 32 32 * @param string $resource the id of a resource 33 33 * @return boolean true if the right is set 34 34 */ 35 public static function setRight($group, $subject, $value , $resource=''){35 public static function addRight($group, $subject, $value , $resource=''){ 36 36 37 // r�p� le groupe de valeur correspondant au subject38 39 37 $daosbj = jDao::get('jxacl~jaclsubject'); 40 38 $daorightval = jDao::get('jxacl~jaclrightvalues'); 41 $daoright = jDao::get('jxacl~jaclrights'); 42 39 43 40 $sbj = $daosbj->get($subject); 44 41 if(!$sbj) return false; … … 46 43 // r�p� la liste des valeurs du groupe de valeur 47 44 $vallist = $daorightval->findByValGroup($sbj->id_aclvalgrp); 48 45 49 46 if($resource === null) $resource=''; 50 51 // met �our la table jacl_rights 52 $right = $daoright->get($subject,$group,$resource); 53 if($right){ 54 if(is_array($value)){ 55 foreach($value as $val){ 56 $right->value = $val; 57 $daoright->update($right); 58 } 59 }else{ 60 $right->value = $value; 61 $daoright->update($right); 47 48 // on verifie que la valeur est autoris� $ok=false; 49 foreach($vallist as $valueok){ 50 if($valueok->value == $value){ 51 $ok = true; 52 break; 62 53 } 63 }else{ 54 } 55 if(!$ok) return false; 56 57 // ajoute la nouvelle valeur 58 $daoright = jDao::get('jxacl~jaclrights'); 59 $right = $daoright->get($subject,$group,$resource,$value); 60 if(!$right){ 64 61 $right = jDao::createRecord('jxacl~jaclrights'); 65 62 $right->id_aclsbj = $subject; 66 63 $right->id_aclgrp = $group; 67 64 $right->id_aclres = $resource; 65 $right->value = $value; 66 $daoright->insert($right); 67 } 68 68 69 if(is_array($value)){70 foreach($value as $val){71 $right->value = $val;72 $daoright->insert($right);73 }74 }else{75 $right->value = $value;76 $daoright->insert($right);77 }78 }79 69 return true; 80 70 } 71 72 /** 73 * remove a right on the given subject/group/resource 74 * @param int $group the group id. 75 * @param string $subject the key of the subject 76 * @param string $value the value of the right 77 * @param string $resource the id of a resource 78 */ 79 public static function removeRight($group, $subject, $value , $resource=''){ 80 $daoright = jDao::get('jxacl~jaclrights'); 81 if($resource === null) $resource=''; 82 $daoright->delete($subject,$group,$resource,$value); 83 } 84 85 81 86 82 87 /** … … 119 124 $daosbj->delete($subject); 120 125 } 121 122 123 126 } 124 127
