Changeset 325

Show
Ignore:
Timestamp:
12/11/06 00:02:10 (2 years ago)
Author:
laurentj
Message:

travail sur le module jxacl : ajout/suppression de user dans un group, fix bugs...

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/jelix-modules/jxacl/classes/aclservice.class.php

    r323 r325  
    1818        $sql = 'SELECT s.id_aclsbj, s.id_aclvalgrp, s.label_key, r.value as right_value, r.id_aclres,  
    1919                        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'; 
    2325        $cnx = jDb::getConnection(); 
    2426 
  • trunk/lib/jelix-modules/jxacl/controllers/admin.jsonrpc.php

    r318 r325  
    33* @package     jelix-modules 
    44* @subpackage  jxacl 
    5 * @version     $Id$ 
    65* @author      Jouanneau Laurent 
    76* @contributor 
     
    1716    function saveright() { 
    1817        $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'; 
    2428        return $rep; 
    2529    } 
     
    6367    } 
    6468 
     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    } 
    65107} 
    66108?> 
  • trunk/lib/jelix-modules/jxacl/templates/xuladmin.tpl

    r323 r325  
    1818 
    1919<script type="application/x-javascript"><![CDATA[ 
    20  
    21   {literal} 
    22     var gCurrentRight = {}; 
     20{literal} 
    2321    var gGroupList; 
    2422 
     
    3836        pager.setAttribute('datasourceurl',''); 
    3937        pager.loadCount(); 
    40     } 
    41  
    42     function selectRightForm(idvalgrp, rightvalue){ 
    43  
     38        document.getElementById('newname').setAttribute('value',''); 
    4439    } 
    4540 
    4641    function changeGroup( idgroup ){ 
    4742        if( idgroup!= ''){ 
    48             {/literal} 
     43{/literal} 
    4944            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} 
    5346            document.getElementById('rights').setAttribute("datasources",""); 
    5447            document.getElementById('rights').setAttribute("datasources",righturl); 
    5548            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); 
    6051        }else{ 
    6152            disableAll(); 
    6253        } 
    6354        document.getElementById('groupname').setAttribute('value',gGroupList.selectedItem.label); 
    64         gCurrentRight = {}; 
    6555    } 
    6656 
     
    7060    } 
    7161 
    72     function removeUserFromGrp (tree) { 
     62    function removeUserFromGrp () { 
    7363        if (confirm('Etes vous s� vouloir supprimer cet Utilisateur ?')) { 
     64            var tree = document.getElementById('users'); 
    7465            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(); 
    7870        } 
    7971    } 
     
    8173 
    8274    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    } 
    96110 
    97111    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; 
    115114    } 
    116115 
     
    125124        gGroupList.selectedIndex=0; 
    126125        gGroupList.removeItemAt(i); 
    127         disableAll(); 
     126        changeGroup(''); 
    128127    } 
    129128 
     
    133132    } 
    134133 
    135     function onAddUserGroup(form,idgroup){ 
     134    function onAddUserGroup(){ 
    136135        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} 
    140145        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} 
    142148        var pager = document.getElementById('userspager'); 
    143149        pager.setAttribute('counturl',counturl); 
    144         pager.setAttribute('datasourceurl',''); 
    145150        pager.setAttribute('datasourceurl',usersurl); 
    146151        pager.loadCount(); 
    147152    } 
    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} 
    162154]]></script> 
    163155 
     
    195187        onerror="alert(this.httpreq.responseText);" 
    196188        /> 
    197 <!--<jx:submission id="rightsform" action="{jurl '@jsonrpc'}" method="POST" 
     189<jx:submission id="rightsform" action="{jurl '@jsonrpc'}" method="POST" 
    198190        format="json-rpc" rpcmethod="jxacl~admin_saveright" 
    199191        onsubmit="onRightsFormSubmit(this)" 
    200         onresult="reloadRights()
     192        onresult="gModifiedRights = []
    201193        onhttperror="alert('erreur http :' + event.errorCode)" 
    202194        oninvalidate="alert('erreur de saisie')" 
    203195        onrpcerror="alert('rpcerror:\n'+this.jsonResponse.error.toSource())" 
    204196        onerror="alert('error:\n'+this.httpreq.responseText);" 
    205         />--> 
     197        /> 
    206198<jx:submission id="addusertogrpform"  
    207199        action="{jurl '@jsonrpc'}"  
     
    210202        rpcmethod="jxacl~admin_addusertogrp" 
    211203        onsubmit="" 
    212         onresult="onAddUserGroup(this,document.getElementById('groupid').selectedItem.value)" 
     204        onresult="onAddUserGroup()" 
    213205        onhttperror="alert('erreur http :' + event.errorCode)" 
    214206        oninvalidate="alert('Saisissez correctement le nouveau nom')" 
    215207        onrpcerror="alert(this.jsonResponse.error.toSource())" 
    216208        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 
    217222 
    218223<description class="title-page">Gestion des droits</description> 
    219224<hbox flex="1" align="stretch" > 
    220225    <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> 
    255256    </vbox> 
    256  
    257257 
    258258    <vbox class="content-cols" flex="1"> 
     
    263263            </tabs> 
    264264        <tabpanels flex="1"> 
    265             <tabpanel
    266                 <tree id="rights" ref="urn:data:row" width="500" datasources="rdf:null" 
    267                     onselect="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"> 
    268268                    <treecols> 
    269269                        <treecol id="rights-col" label="Droits" primary="true" flex="2" 
     
    316316                    </template> 
    317317                </tree> 
     318                <hbox><jx:submit form="rightsform" label="Enregistrer" observes="groupstatus"/></hbox> 
    318319            </tabpanel> 
    319320            <tabpanel orient="vertical"> 
    320321                <popupset> 
    321322                    <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();"/> 
    324325                    </popup> 
    325326                </popupset> 
     
    347348                <groupbox submit="addusersubmit"> 
    348349                    <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" /> 
    353356            </tabpanel> 
    354357        </tabpanels> 
     
    356359   </vbox> 
    357360</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  
    2828    function in (){ 
    2929        $conf = $GLOBALS['gJCoord']->getPlugin ('auth')->config; 
    30  
     30        $url_return = '/'; 
    3131        if (!($conf['enable_after_login_override'] && $url_return= $this->param('auth_url_return'))){ 
    3232            $url_return =  jUrl::get($conf['after_login']); 
  • trunk/lib/jelix-modules/jxauth/plugins/auth/auth.plugin.php

    r259 r325  
    7474        if($needAuth){ 
    7575            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')){ 
    7778                    trigger_error(jLocale::get($this->config['error_message']), E_USER_ERROR); 
    7879                    exit; 
  • trunk/lib/jelix-www/xul/jxbl.xml

    r307 r325  
    239239        </method> 
    240240      </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> 
    261242 
    262243    <binding id="jbox" extends="xul:box"> 
  • trunk/lib/jelix/acl/jAclManager.class.php

    r323 r325  
    2626 
    2727    /** 
    28      * specify the value of a right on the given subject/group/resource 
     28     * add a right on the given subject/group/resource 
    2929     * @param int    $group the group id. 
    30      * @param string $subject the key of the subject to check 
    31      * @param string|array  $value the value of the right 
     30     * @param string $subject the key of the subject 
     31     * @param string  $value the value of the right 
    3232     * @param string $resource the id of a resource 
    3333     * @return boolean  true if the right is set 
    3434     */ 
    35     public static function setRight($group, $subject, $value , $resource=''){ 
     35    public static function addRight($group, $subject, $value , $resource=''){ 
    3636 
    37         //  r�p� le groupe de valeur correspondant au subject 
    38      
    3937        $daosbj = jDao::get('jxacl~jaclsubject'); 
    4038        $daorightval = jDao::get('jxacl~jaclrightvalues'); 
    41         $daoright = jDao::get('jxacl~jaclrights'); 
    42      
     39 
    4340        $sbj = $daosbj->get($subject); 
    4441        if(!$sbj) return false; 
     
    4643        //  r�p� la liste des valeurs du groupe de valeur 
    4744        $vallist = $daorightval->findByValGroup($sbj->id_aclvalgrp); 
    48      
     45 
    4946        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; 
    6253            } 
    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){ 
    6461            $right = jDao::createRecord('jxacl~jaclrights'); 
    6562            $right->id_aclsbj = $subject; 
    6663            $right->id_aclgrp = $group; 
    6764            $right->id_aclres = $resource; 
     65            $right->value = $value; 
     66            $daoright->insert($right); 
     67        } 
    6868 
    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         } 
    7969        return true; 
    8070    } 
     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 
    8186 
    8287    /** 
     
    119124      $daosbj->delete($subject); 
    120125    } 
    121  
    122  
    123126} 
    124127 
Download in other formats: Unified Diff Zip Archive