Changeset 19639


Ignore:
Timestamp:
02/03/12 11:25:07 (4 months ago)
Author:
sys
Message:

extPoints.hasPermission() : isolement du controle des systemRights de celui des roles.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Xul_Commons/content/Commons/ExtPoints.jsm

    r19186 r19639  
    686686         */ 
    687687        hasPermission : function(pPerms, pRoleNames, pSystemRights){ 
    688                 //Si aucun role de paramétré dans l'extPoints, on ets dans un contexte hors getsion de droits, on valide la perm. 
     688                //Init perms 
     689                var vPerm, vOffset; 
     690                if(Array.isArray(pPerms)) { 
     691                        vPerm = pPerms[0]; 
     692                        vOffset = 1; 
     693                } else { 
     694                        vPerm = pPerms; 
     695                } 
     696                 
     697                //System rights 
     698                if(pSystemRights != null) { 
     699                        while(vPerm) { 
     700                                //log.info("hasPermission:::"+pPerms+" for roles:::"+pRoleNames); 
     701                                var vPermRi = vPerm; 
     702                                while(vPermRi) { 
     703                                        if(vPermRi.getSystemRights()>0 && ~(~vPermRi.getSystemRights() | pSystemRights)!=0) return false; 
     704                                        vPermRi = vPermRi.getParent(); 
     705                                } 
     706                                vPerm = vOffset>0 ? pPerms[vOffset++] : null; 
     707                        } 
     708                        //reinit des perm pour les roles. 
     709                        if(Array.isArray(pPerms)) { 
     710                                vPerm = pPerms[0]; 
     711                                vOffset = 1; 
     712                        } else { 
     713                                vPerm = pPerms; 
     714                                vOffset = 0; 
     715                        } 
     716                } 
     717                 
     718                //Si aucun role de paramétré dans l'extPoints, on est dans un contexte hors gestion de droits, on valide la perm. 
    689719                if (!this.hasRoles()) return true; 
    690720                if(!pRoleNames || pRoleNames.length==0) return false; 
     
    696726                                return vP2 - vP1; 
    697727                        }); 
    698                 } 
    699                 var vPerm, vOffset; 
    700                 if(Array.isArray(pPerms)) { 
    701                         vPerm = pPerms[0]; 
    702                         vOffset==1; 
    703                 } else { 
    704                         vPerm = pPerms; 
    705728                } 
    706729                while(vPerm) { 
     
    840863         * Teste s'il existe des rôles 
    841864         *  
    842          * @returns true si au moins un role est défini  
     865         * @return true si au moins un role est défini  
    843866         */ 
    844867        hasRoles : function() { 
     
    853876         * Retourne la liste des rôles définies 
    854877         *  
    855          * @returns tableau des noms de rôles 
     878         * @return tableau des noms de rôles 
    856879         */ 
    857880        getRoleNames : function () { 
     
    12341257                } 
    12351258                if(pRolePermList.deny) for each(var vPermName in pRolePermList.deny) { 
    1236                         var vPRE = vR.fPREs[vPermName]; 
    12371259                        if(pOverwriteParent || this.fParentExtPoints.getRolePermLevel(vRoleName, vPermName) < pLevelAuthority) { 
     1260                                var vPRE = vR.fPREs[vPermName]; 
    12381261                                if(!vPRE || vPRE.fLevel < pLevelAuthority) { 
    12391262                                        vR.fPREs[vPermName] = {fLevel : pLevelAuthority, fValue : false} 
     
    12421265                } 
    12431266                if(pRolePermList.allow) for each(var vPermName in pRolePermList.allow) { 
    1244                         var vPRE = vR.fPREs[vPermName]; 
    12451267                        if(pOverwriteParent || this.fParentExtPoints.getRolePermLevel(vRoleName, vPermName) < pLevelAuthority) { 
     1268                                var vPRE = vR.fPREs[vPermName]; 
    12461269                                if(!vPRE || vPRE.fLevel < pLevelAuthority) { 
    12471270                                        vR.fPREs[vPermName] = {fLevel : pLevelAuthority, fValue : true} 
     
    12501273                } 
    12511274                if(pRolePermList.erase) for each(var vPermName in pRolePermList.erase) { 
    1252                         var vPRE = vR.fPREs[vPermName]; 
    12531275                        if(pOverwriteParent || this.fParentExtPoints.getRolePermLevel(vRoleName, vPermName) < pLevelAuthority) { 
     1276                                var vPRE = vR.fPREs[vPermName]; 
    12541277                                if(!vPRE || vPRE.fLevel < pLevelAuthority) { 
    12551278                                        vR.fPREs[vPermName] = {fLevel : pLevelAuthority, fValue : null} 
Note: See TracChangeset for help on using the changeset viewer.