Changeset 19623


Ignore:
Timestamp:
02/01/12 22:07:43 (4 months ago)
Author:
sys
Message:

Sécurité côté serveur en cours...

Location:
trunk
Files:
9 added
2 deleted
22 edited

Legend:

Unmodified
Added
Removed
  • trunk/Jav_Commons/src/eu/scenari/commons/security/Access.java

    r18986 r19623  
    4040 
    4141public enum Access { 
    42         allowed, deny, unknown 
     42        allowed, denied, unknown 
    4343} 
    4444 
  • trunk/Jav_Commons/src/eu/scenari/commons/security/IPermission.java

    r18986 r19623  
    3939package eu.scenari.commons.security; 
    4040 
    41 public interface IPermission extends java.security.acl.Permission { 
     41public interface IPermission { 
     42 
     43        public String getName(); 
     44 
     45        public int getSystemRights(); 
     46 
    4247        public IPermission getParent(); 
    4348 
    44         public IPermission[] getFlatennedPermissons(); 
     49        //public IPermission[] getFlatennedPermissons(); 
    4550} 
    46  
    47                  
  • trunk/Jav_Commons/src/eu/scenari/commons/security/IPermissionRoleController.java

    r18986 r19623  
    3939package eu.scenari.commons.security; 
    4040 
    41 import java.util.List; 
     41import java.util.Collection; 
    4242 
     43/** 
     44 *  
     45 */ 
    4346public interface IPermissionRoleController { 
    44         public Access hasPermission(List<IRole> pRoles, IPermission pPermission); 
    45             //Chaque impl assumera ses logiques de créations et d'ordonnancement des règles / triplets / PRE (PermissionRoleEntry). 
    46             //interface IPRE ? 
    47             //addPRE(IPermission pPermission, IRole pRole, boolean pAllow); ?  
     47 
     48        /** 
     49         *  
     50         */ 
     51        public Access hasPermission(Collection<IRole> pRoles, IPermission pPerm); 
     52        //Chaque impl assumera ses logiques de créations et d'ordonnancement des règles / triplets / PRE (PermissionRoleEntry). 
     53        //interface IPRE ? 
     54        //addPRE(IPermission pPermission, IRole pRole, boolean pAllow); ?  
    4855} 
    49  
    50                  
  • trunk/Jav_Commons/src/eu/scenari/commons/security/PermissionMgr.java

    r18986 r19623  
    3939package eu.scenari.commons.security; 
    4040 
     41import java.util.HashMap; 
     42import java.util.Map; 
     43 
    4144public class PermissionMgr { 
    42         public IPermission getOrCreate(String pPermName, IPermission pParent) { 
    43                 return pParent; 
     45 
     46        public static final PermissionMgr GLOBAL = new PermissionMgr(); 
     47 
     48        protected final PermissionMgr fParentMgr; 
     49 
     50        protected final Map<String, IPermission> fPerms = new HashMap<String, IPermission>(); 
     51 
     52        protected class Permission implements IPermission { 
     53 
     54                protected String fName; 
     55 
     56                protected int fSystemRights; 
     57 
     58                protected IPermission fParentPerm; 
     59 
     60                protected Permission(String pName, IPermission pParent, int pSystemRights) { 
     61                        super(); 
     62                        fName = pName; 
     63                        fParentPerm = pParent; 
     64                        fSystemRights = pSystemRights; 
     65                } 
     66 
     67                public String getName() { 
     68                        return fName; 
     69                } 
     70 
     71                public int getSystemRights() { 
     72                        return fSystemRights; 
     73                } 
     74 
     75                public IPermission getParent() { 
     76                        return fParentPerm; 
     77                } 
     78 
     79                public String toString() { 
     80                        return buildFullName(new StringBuilder()).toString(); 
     81                } 
     82 
     83                protected StringBuilder buildFullName(StringBuilder pSb) { 
     84                        if (fParentPerm != null) { 
     85                                ((Permission) fParentPerm).buildFullName(pSb); 
     86                                pSb.append("/"); 
     87                        } 
     88                        pSb.append(fName); 
     89                        return pSb; 
     90                } 
     91 
    4492        } 
    4593 
    46         public IPermission getIfExist(String pPermName) { 
    47                 return null; 
     94        protected PermissionMgr() { 
     95                fParentMgr = null; 
     96        } 
     97 
     98        public PermissionMgr(PermissionMgr pParent) { 
     99                fParentMgr = pParent; 
     100        } 
     101 
     102        public synchronized IPermission getOrCreate(String pPermName, IPermission pParent) { 
     103                IPermission vPerm = getIfExist(pPermName); 
     104                if (vPerm != null) return vPerm; 
     105                return createPerm(pPermName, pParent, 0); 
     106        } 
     107 
     108        public synchronized IPermission getOrCreate(String pPermName, IPermission pParent, int pSystemRight) { 
     109                IPermission vPerm = getIfExist(pPermName); 
     110                if (vPerm != null) return vPerm; 
     111                return createPerm(pPermName, pParent, pSystemRight); 
     112        } 
     113 
     114        public synchronized IPermission getIfExist(String pPermName) { 
     115                IPermission vPerm = fPerms.get(pPermName); 
     116                if (vPerm != null) return vPerm; 
     117                return fParentMgr != null ? fParentMgr.getIfExist(pPermName) : null; 
    48118        } 
    49119 
    50120        /** Publi un arbre sous forme textuelle (facilite l'analyse et la doc du code...). */ 
    51         public void dumpTree(Appendable pWriter) { 
     121        //      public synchronized void dumpTree(Appendable pWriter) { 
     122        // 
     123        //      } 
    52124 
     125        protected IPermission createPerm(String pPermName, IPermission pParent, int pSystemRight) { 
     126                assert (Thread.holdsLock(this)); 
     127                IPermission vPerm = new Permission(pPermName, pParent, pSystemRight); 
     128                fPerms.put(pPermName, vPerm); 
     129                return vPerm; 
    53130        } 
    54131} 
    55                  
  • trunk/Jav_Core/src/com/scenari/m/co/univers/IWUnivers.java

    r18986 r19623  
    4242import com.scenari.src.ISrcNode; 
    4343 
     44import eu.scenari.commons.extpoints.ExtPoints; 
     45import eu.scenari.commons.security.PermissionMgr; 
    4446import eu.scenari.commons.user.IUser; 
    4547import eu.scenari.commons.user.IUserMgr; 
     
    5658         */ 
    5759        public String getUniverseCode(); 
     60 
     61        /** 
     62         * Points d'extensions pour cet univers. 
     63         */ 
     64        public ExtPoints getExtPoints(); 
     65 
     66        /** 
     67         * Gestionnaire de permissions pour cet univers. 
     68         */ 
     69        public PermissionMgr getPermissionMgr(); 
    5870 
    5971        /** 
  • trunk/Jav_Core/src/com/scenari/m/co/univers/WUnivers.java

    r18986 r19623  
    4747import com.scenari.src.system.ISrcSystem; 
    4848 
     49import eu.scenari.commons.extpoints.ExtPoints; 
    4950import eu.scenari.commons.log.LogMgr; 
     51import eu.scenari.commons.security.PermissionMgr; 
    5052import eu.scenari.commons.user.IUser; 
    5153import eu.scenari.commons.user.IUserMgr; 
     
    6264        protected String fCode = null; 
    6365 
    64         protected HashMap fEspaces = new HashMap(); 
     66        protected HashMap fSpaces = new HashMap(); 
    6567 
    6668        /** Manager des acteurs. */ 
     
    7577        /** Contextes d'execution de l'univers. */ 
    7678        protected IExecFrame[] fExecFrames = null; 
     79 
     80        /** */ 
     81        protected ExtPoints fExtPoints = new ExtPoints(); 
     82 
     83        /**  
     84         * Manager de permission. 
     85         * Pour le moment, pointe simplement le PermissionMgr global. 
     86         * Lorsqu'un classLoader sera associé à l'unviers, il pourra être utile de d'en définir un dédié à l'univers. 
     87         */ 
     88        protected PermissionMgr fPermMgr = PermissionMgr.GLOBAL; 
    7789 
    7890        /** 
     
    101113        public IUserMgr getUserMgr() { 
    102114                return fUserMgr; 
     115        } 
     116 
     117        public ExtPoints getExtPoints() { 
     118                return fExtPoints; 
     119        } 
     120 
     121        public PermissionMgr getPermissionMgr() { 
     122                return fPermMgr; 
    103123        } 
    104124 
     
    152172         */ 
    153173        public final ISrcNode hGetEspace(String pCodeEspace) throws Exception { 
    154                 ISrcSystem vSourceSystem = (ISrcSystem) fEspaces.get(pCodeEspace); 
     174                ISrcSystem vSourceSystem = (ISrcSystem) fSpaces.get(pCodeEspace); 
    155175                return vSourceSystem != null ? vSourceSystem.getStartSrcNode() : null; 
    156176        } 
     
    171191         */ 
    172192        public final void hSetEspace(String pCode, ISrcSystem pSourceSystem) { 
    173                 fEspaces.put(pCode, pSourceSystem); 
     193                fSpaces.put(pCode, pSourceSystem); 
    174194        } 
    175195 
  • trunk/Jav_Moz_Wsp/src/com/scenari/i/ihmcms/serv/HTabItemType.java

    r19260 r19623  
    6060public class HTabItemType extends SenderHttpResponseBase { 
    6161 
    62         //protected SimpleDateFormat fFormatDate = new SimpleDateFormat("dd/MM/yy HH:mm:ss"); 
    63  
    64         /* 
    65          * (non-Javadoc) 
    66          *  
    67          * @see com.scenari.i.ihmcms.HServletBase#xService(javax.servlet.http.HttpServletRequest, 
    68          *      javax.servlet.http.HttpServletResponse, com.scenari.m.co.dialog.IHDialog) 
    69          */ 
    7062        public void xSendDialogResult(IDialog pDialog, HttpServletRequest pReq, HttpServletResponse pResp) throws Exception { 
    7163 
  • trunk/Jav_Src/src/com/scenari/src/feature/roles/SrcFeatureRoles.java

    r18986 r19623  
    3939package com.scenari.src.feature.roles; 
    4040 
    41 import java.util.Set; 
    42  
    4341import com.scenari.src.aspect.ISrcAspectDef; 
    4442import com.scenari.src.aspect.ISrcAspectable; 
     
    6866         * @return <code>null</code> si aucun aspect ne gère les roles. 
    6967         */ 
    70         public static Set<String> getRoles(ISrcAspectable pSrc) throws Exception { 
     68        public static RolesSet getRoles(ISrcAspectable pSrc) throws Exception { 
    7169                IUserRoles vAspect = pSrc.getAspect(USERROLES_ASPECT); 
    7270                if (vAspect != null) return vAspect.overrideRoles(null); 
  • trunk/Jav_Wsp/src/com/scenari/m/bdp/item/IHWorkspace.java

    r19260 r19623  
    5151import com.scenari.src.ISrcServer; 
    5252 
     53import eu.scenari.commons.extpoints.ExtPoints; 
     54import eu.scenari.commons.security.PermissionMgr; 
    5355import eu.scenari.commons.stream.bytes.IByteStream; 
    54 import eu.scenari.commons.user.IUser; 
    5556import eu.scenari.core.agt.IAgtProvider; 
    5657import eu.scenari.wsp.item.IItem; 
     
    6869public interface IHWorkspace extends IServiceProvider { 
    6970 
    70         public static final String RIGHT_READ = "Read"; 
    71  
    72         public static final String RIGHT_WRITE = "Write"; 
    73  
    7471        /** 
    7572         * Demande d'être notifié à chaque modification / suppression de tout item du 
     
    123120         */ 
    124121        public IWspDefinition getWspDefinition(); 
    125  
    126         /** 
    127          * Retourne si un utilisateur dispose des droits d'accès à cet atelier. 
    128          *  
    129          * @param pUser Code du user. 
    130          * @param pRight Droit à controler. 
    131          */ 
    132         public boolean hCheckRight(IUser pUser, String pRight); 
    133122 
    134123        /** 
     
    304293        public IWspService getService(String pSvcCode); 
    305294 
     295        /** 
     296         * Points d'extensions pour cet atelier. 
     297         */ 
     298        public ExtPoints getExtPoints(); 
     299 
     300        /** 
     301         * Gestionnaire de permissions pour les permissions propres au modèle documentaire 
     302         * associé à cet atelier. 
     303         */ 
     304        public PermissionMgr getPermissionMgr(); 
     305 
    306306        /** Méthodes exploitées en interne par les modules ou l'Api Src. */ 
    307307        public interface IWorkspaceInternal extends IHWorkspace { 
  • trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/HWorkspaceFs.java

    r19275 r19623  
    6969import com.scenari.m.bdp.module.save.HStreamHandler; 
    7070import com.scenari.m.bdp.transaction.IHTransaction; 
    71 import com.scenari.m.co.user.IHActorMgr; 
    7271import com.scenari.s.co.transform.HTransformParams; 
    7372import com.scenari.s.fw.utils.HIntArrayList; 
     
    10099import eu.scenari.wsp.item.impl.ItemDef; 
    101100import eu.scenari.wsp.objecttype.IItemType; 
     101import eu.scenari.wsp.objecttype.IItemType.IItemTypeInternal; 
    102102import eu.scenari.wsp.objecttype.ItemType; 
    103 import eu.scenari.wsp.objecttype.IItemType.IItemTypeInternal; 
    104103import eu.scenari.wsp.provider.IWspDefinition; 
    105104import eu.scenari.wsp.repos.IRepository; 
     
    116115 *  
    117116 */ 
    118 public class HWorkspaceFs implements IWorkspaceInternal, ISrcServer, ISearchAspect, IMemoryOwner { 
     117public abstract class HWorkspaceFs implements IWorkspaceInternal, ISrcServer, ISearchAspect, IMemoryOwner { 
    119118 
    120119        /** Les items de cet atelier n'ont pas été chargés exhaustivement. */ 
     
    177176        /** Statut de chargement du réseau d'items de cet atelier. */ 
    178177        protected volatile int fStatusItemLoaded = STATUS_ALL_ITEM_LOADED_NO; 
    179  
    180         /** Gestion des droits. */ 
    181         protected IHActorMgr fActorMgr = null; 
    182178 
    183179        /** */ 
     
    495491 
    496492        /** 
    497          *  
    498          */ 
    499         public boolean hCheckRight(IUser pUser, String pRight) { 
    500                 if (fActorMgr == null) return true; 
    501                 try { 
    502                         // Administrateur du système -> toujours les droits. 
    503                         if (pUser.isSuperAdmin()) return true; 
    504                         return fActorMgr.hIsUserRole(pUser.getAccount(), pRight); 
    505                 } catch (Exception e) { 
    506                         LogMgr.publishException(e); 
    507                         return true; 
    508                 } 
    509         } 
    510  
    511         /** 
    512493         * @see com.scenari.m.bdp.item.IHWorkspace#hGetRepository() 
    513494         */ 
  • trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/HWspMaster.java

    r19317 r19623  
    5252import com.scenari.src.helpers.util.SrcServerMultiSources; 
    5353 
     54import eu.scenari.commons.extpoints.ExtPoints; 
     55import eu.scenari.commons.extpoints.SubExtPoints; 
    5456import eu.scenari.commons.log.ILogMsg.LogType; 
    5557import eu.scenari.commons.log.LogMgr; 
     58import eu.scenari.commons.security.PermissionMgr; 
    5659import eu.scenari.wsp.item.IItem; 
    5760import eu.scenari.wsp.item.IItemDef; 
     
    5962import eu.scenari.wsp.item.impl.Item; 
    6063import eu.scenari.wsp.objecttype.IItemType; 
     64import eu.scenari.wsp.objecttype.IItemType.IItemTypeInternal; 
    6165import eu.scenari.wsp.objecttype.ItemType; 
    62 import eu.scenari.wsp.objecttype.IItemType.IItemTypeInternal; 
    6366import eu.scenari.wsp.provider.IWspDefinition; 
    6467 
     
    7780        protected SrcServerMultiSources fSrcServerMultiSources = null; 
    7881 
     82        protected SubExtPoints fExtPoints; 
     83 
     84        protected PermissionMgr fPermMgr; 
     85 
    7986        public HWspMaster(HRepositoryFsBase pRepository, IWspDefinition pWspDef) { 
    8087                super(pRepository, pWspDef); 
     88                fExtPoints = new SubExtPoints(pRepository.getUniverse().getExtPoints()); 
     89                fPermMgr = new PermissionMgr(pRepository.getUniverse().getPermissionMgr()); 
     90        } 
     91 
     92        public ExtPoints getExtPoints() { 
     93                return fExtPoints; 
     94        } 
     95 
     96        public PermissionMgr getPermissionMgr() { 
     97                return fPermMgr; 
    8198        } 
    8299 
  • trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/HWspSlave.java

    r19317 r19623  
    5555import com.scenari.wsp.src.search.SearchExecutorWsp; 
    5656 
     57import eu.scenari.commons.extpoints.ExtPoints; 
     58import eu.scenari.commons.security.PermissionMgr; 
    5759import eu.scenari.wsp.objecttype.IItemType; 
    5860import eu.scenari.wsp.provider.IWspDefinition; 
     
    6870        public HWspSlave(HRepositoryFsBase pRepository, IWspDefinition pWspDef) { 
    6971                super(pRepository, pWspDef); 
     72        } 
     73 
     74        public ExtPoints getExtPoints() { 
     75                //TODO Créer un SubExtPoints dédié pour des propriétés spécifiques à cet instance d'atelier. 
     76                //A voir : stratégie de persistance de ces propriétés avec le wspProvider... 
     77                return fWspMatser.getExtPoints(); 
     78        } 
     79 
     80        public PermissionMgr getPermissionMgr() { 
     81                return fWspMatser.getPermissionMgr(); 
    7082        } 
    7183 
  • trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspHandler.java

    r19585 r19623  
    4848 
    4949import com.scenari.m.bdp.item.IHWorkspace; 
    50 import com.scenari.m.co.user.HActorMgrInMem; 
    5150import com.scenari.serializer.simple.IXmlWriter; 
    5251import com.scenari.serializer.simple.XmlWriterAppendable; 
     
    5958import eu.scenari.commons.log.LogMgr; 
    6059import eu.scenari.commons.stream.bytes.OutputStreamBlob; 
    61 import eu.scenari.commons.user.IUser; 
    6260import eu.scenari.wsp.pack.IPackMgr; 
    6361import eu.scenari.wsp.provider.IWspDefinition; 
     
    8381        /** UpdtMgr de ce wsp. */ 
    8482        protected IResMgr fUpdtMgrWsp = null; 
    85  
    86         /** Gestion des droits d'accès au repository. */ 
    87         protected HActorMgrInMem fActorMgr = null; 
    8883 
    8984        /** 
     
    391386                fWsp = new HWspStandAlone(fRepos, fWspDefinition); 
    392387                fWsp.fCheckUpdateItems = fRepos.fCheckUpdateItems; 
    393                 fWsp.fActorMgr = fActorMgr; 
    394388        } 
    395389 
     
    687681                notifyAll(); 
    688682        } 
    689  
    690         /** 
    691          * TODO A supprimer, passer par {@link IWspDefinition#controlAccess(IUser, java.security.acl.Permission)}. 
    692          */ 
    693         public boolean checkRight(IUser pUser, String pRight) { 
    694                 if (fActorMgr == null) return true; 
    695                 try { 
    696                         // Administrateur du système -> toujours les droits. 
    697                         if (pUser.isSuperAdmin()) return true; 
    698                         return fActorMgr.hIsUserRole(pUser.getAccount(), pRight); 
    699                 } catch (Exception e) { 
    700                         LogMgr.publishException(e); 
    701                         return true; 
    702                 } 
    703         } 
    704683} 
  • trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspHandlerMaster.java

    r19585 r19623  
    143143                fWsp = new HWspMaster(fRepos, fWspDefinition); 
    144144                fWsp.fCheckUpdateItems = sCheckUpdateItems; 
    145                 fWsp.fActorMgr = fActorMgr; 
    146145        } 
    147146 
  • trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspHandlerSlave.java

    r19181 r19623  
    6262        protected void xCreateWsp() { 
    6363                this.fWsp = new HWspSlave(fRepos, fWspDefinition); 
    64                 this.fWsp.fCheckUpdateItems = fRepos.fCheckUpdateItems; 
    65                 this.fWsp.fActorMgr = this.fActorMgr; 
    6664        } 
    6765 
  • trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspSrcNodeItem.java

    r19570 r19623  
    8989import com.scenari.src.feature.refresh.IRefreshAspect; 
    9090import com.scenari.src.feature.rights.IAccessRightsAspect; 
     91import com.scenari.src.feature.rights.SrcFeatureRights; 
    9192import com.scenari.src.feature.roles.IUserRolesHook; 
    9293import com.scenari.src.feature.roles.SrcFeatureRoles; 
     
    322323 
    323324        public int getRights() throws Exception { 
    324                 return WspSrcUtil.getRights(this); 
     325                return SrcFeatureRights.getAllowedRights(getSubSrcNode()); 
    325326        } 
    326327 
  • trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspSrcNodeSpace.java

    r19570 r19623  
    6161import com.scenari.src.feature.ids.IFindUriByIdAspect; 
    6262import com.scenari.src.feature.rights.IAccessRightsAspect; 
     63import com.scenari.src.feature.rights.SrcFeatureRights; 
    6364import com.scenari.src.feature.search.ISearchAspect; 
    6465import com.scenari.src.feature.tasks.ISrcTask; 
     
    208209 
    209210        public int getRights() throws Exception { 
    210                 return WspSrcUtil.getRights(this); 
     211                return SrcFeatureRights.getAllowedRights(getSubSrcNode()); 
    211212        } 
    212213 
  • trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspSrcUtil.java

    r18986 r19623  
    3939package com.scenari.m.bdp.item.fs; 
    4040 
    41 import com.scenari.m.bdp.item.IHWorkspace; 
    4241import com.scenari.m.bdp.module.rename.IHRenamingPlan; 
    4342import com.scenari.src.ISrcNode; 
     
    4544import com.scenari.src.feature.ids.SrcFeatureIds; 
    4645import com.scenari.src.feature.paths.SrcFeaturePaths; 
    47 import com.scenari.src.feature.rights.SrcFeatureRights; 
    4846 
    4947import eu.scenari.commons.log.LogMgr; 
    5048import eu.scenari.commons.pools.PoolBuffers; 
    51 import eu.scenari.commons.user.IUser; 
    52 import eu.scenari.commons.user.ThreadUser; 
    5349import eu.scenari.wsp.item.IWspSrc; 
    5450import eu.scenari.wsp.item.IWspSrc.WspNodeType; 
     
    176172 
    177173        /** 
    178          *  
    179          */ 
    180         public static int getRights(IWspSrc pWspNode) throws Exception { 
    181                 IUser vUser = ThreadUser.getUser(); 
    182                 IHWorkspace vWsp = pWspNode.getWorkspace(); 
    183                 if (vWsp.hCheckRight(vUser, IHWorkspace.RIGHT_WRITE)) { 
    184                         //Tous les droits, éventuellement limités par la SubSource. 
    185                         return SrcFeatureRights.getAllowedRights(pWspNode.getSubSrcNode()); 
    186                 } else if (vWsp.hCheckRight(vUser, IHWorkspace.RIGHT_READ)) { 
    187                         //Resctrictions aux droits en lecture seule 
    188                         return SrcFeatureRights.RIGHTS_READ & SrcFeatureRights.getAllowedRights(pWspNode.getSubSrcNode()); 
    189                 } 
    190                 //Aucun droit. 
    191                 return 0; 
    192         } 
    193  
    194         /** 
    195174         * @return <code>true</code> si le dernier fragment de l'Uri est un espace interne d'un item. 
    196175         */ 
  • trunk/Jav_Wsp/src/com/scenari/m/bdp/service/tabitemtype/HSDialogTabItemType.java

    r19260 r19623  
    4242import com.scenari.m.bdp.module.IHModule; 
    4343import com.scenari.m.bdp.module.rename.HModuleRenameXsl; 
     44import com.scenari.src.ISrcServer; 
     45import com.scenari.src.feature.roles.SrcFeatureRoles; 
    4446 
    4547import eu.scenari.commons.log.LogMgr; 
     48import eu.scenari.commons.security.RolesSet; 
     49import eu.scenari.commons.security.ScSecurity; 
    4650import eu.scenari.core.dialog.IDialog; 
    4751import eu.scenari.core.execframe.IExecFrame; 
     
    7276         */ 
    7377        public static final String CDACTION_MAKECOMPIL = "MakeCompil"; 
    74  
    75         /** 
    76          * Code action : Force la revalidation des items qui dépendent d'un ItemType. 
    77          * param du code action : URI de l'itemType à afficher 
    78          * Syntaxe des URI :  
    79          *   - "wspxxx/code.space/codeItem" : vue d'un espace du workspace "wspxxx". 
    80          *   - "repos/code.space/codeItem" : vue d'un espace du repository #### versionning a revoir ####. 
    81          */ 
    82         public static final String CDACTION_REVALIDITEMS = "RevalidItems"; 
    83  
    84         /** 
    85          * Code action : Applique une XSL sur tous les items qui dépendent d'un ItemType. 
    86          * param du code action : URI de l'itemType à afficher 
    87          * Syntaxe des URI :  
    88          *   - "wspxxx/code.space/codeItem" : vue d'un espace du workspace "wspxxx". 
    89          *   - "repos/code.space/codeItem" : vue d'un espace du repository #### versionning a revoir ####. 
    90          * Paramètres supplémentaires :  
    91          *   - "xsl" : XSL à appliquer. 
    92          */ 
    93         public static final String CDACTION_APPLYXSL = "ApplyXsl"; 
    9478 
    9579        public static String sPageResultat = "/serv/tabitemtype_compil.jsp"; 
     
    177161 
    178162                //On calcule la page résultat. 
    179                 if (vCdAction.equals(CDACTION_TABCOMPIL) || vCdAction.equals(CDACTION_MAKECOMPIL) || vCdAction.equals(CDACTION_REVALIDITEMS) || vCdAction.equals(CDACTION_APPLYXSL)) { 
     163                if (vCdAction.equals(CDACTION_TABCOMPIL) || vCdAction.equals(CDACTION_MAKECOMPIL)) { 
    180164                        String vFullUri = getParam(); 
    181165                        String vWsp = WspUri.extractWspCdFromFullUri(vFullUri); 
    182166                        fWorkspace = ((WServiceTabItemType) fService).hGetRepository(this).getWsp(vWsp, true); 
    183                         if (fWorkspace == null) { throw LogMgr.newException("Le workspace '" + vWsp + "' est inconnu."); } 
    184                         if (!fWorkspace.hCheckRight(getContextUser(), IHWorkspace.RIGHT_WRITE)) { throw LogMgr.newException("Accès non autorisé."); } 
     167 
     168                        if (fWorkspace == null) throw LogMgr.newException("Le workspace '" + vWsp + "' est inconnu."); 
     169 
     170                        if (ScSecurity.isEnhancedSecurity()) { 
     171                                RolesSet vRoles = SrcFeatureRoles.getRoles(fWorkspace.findNodeByUri(ISrcServer.URI_ROOT)); 
     172                                if (vCdAction.equals(CDACTION_TABCOMPIL)) { 
     173                                        fWorkspace.getExtPoints().checkPermission(SvcItemTypePermReg.COMPILE, vRoles); 
     174                                } else { 
     175                                        fWorkspace.getExtPoints().checkPermission(SvcItemTypePermReg.SHOWSTATE, vRoles); 
     176                                } 
     177                        } 
    185178 
    186179                        fItemType = fWorkspace.hGetItemType(WspUri.extractSrcUriFromFullUri(vFullUri)); 
     
    188181                        if (vCdAction.equals(CDACTION_MAKECOMPIL)) { 
    189182                                fItemType.compilAgain(); 
    190                         } else if (vCdAction.equals(CDACTION_REVALIDITEMS)) { 
    191                                 throw new Exception("not implemented"); 
    192                                 /* Plus utilisé, si modèle modifié, wsp rechargé 
    193                                 List vItems = new ArrayList(); 
    194                                 IHContentAccess vContentAccess = fWorkspace.hGetContentAccess(); 
    195                                 IHReqItemOfType vReq = (IHReqItemOfType) fWorkspace.hGetRepository().hCreateReqItem(IHReqItemOfType.class); 
    196                                 vReq.hSetValues(fItemType.hGetSpace(), fItemType.hGetCode()); 
    197                                 fWorkspace.hListItemDefs(vItems, vReq, null); 
    198                                 for (int i = 0; i < vItems.size(); i++) { 
    199                                         HItemDef vItemDef = (HItemDef) vItems.get(i); 
    200                                         HStreamHandler vStream = null; 
    201                                         IHItemType vItemType = null; 
    202                                         try { 
    203                                                 if (!vContentAccess.hIsMultiStream(fItemType.hGetContentFormat())) { 
    204                                                         //Racine de l'item 
    205                                                         InputStream vInputStream = vContentAccess.hReadStream(vItemDef, null, null, null, null); 
    206                                                         if (vInputStream != null) { 
    207                                                                 vStream = new HStreamHandler(vInputStream); 
    208                                                         } 
    209                                                 } 
    210                                                 vItemType = HTreatIdentif.xFindItemType(fWorkspace, vItemDef.getUri(), vStream); 
    211                                                 if (vItemType != null) { 
    212                                                         IWUser vActeur = hGetUser(); 
    213                                                         vItemType.hGetModuleSave().hValidateItem(vItemDef, vStream, (vActeur != null) ? vActeur.hGetAccount() : null, ((IContextBdp) hGetContext()).getClientId(), null); 
    214                                                 } 
    215                                         } catch (Throwable e) { 
    216                                                 HLogMgr.hPublishException(e); 
    217                                         } finally { 
    218                                                 if (vStream != null) { 
    219                                                         vStream.hCloseAndPurgeCache(); 
    220                                                 } 
    221                                         } 
    222                                 } 
    223                                 */ 
    224                         } else if (vCdAction.equals(CDACTION_APPLYXSL)) { 
    225                                 //Plus utilisé, mécanisme de migration plus élaboré. 
    226                                 throw new Exception("not implemented"); 
    227                                 /* 
    228                                 //Compilation de la XSL. 
    229                                 Templates vXsl = null; 
    230                                 try { 
    231                                         Source vSrc = new StreamSource(new StringReader(fParamEntree.fXsl)); 
    232                                         TransformerFactoryImpl vTemplatesFact = new TransformerFactoryImpl(); 
    233                                         vXsl = vTemplatesFact.newTemplates(vSrc); 
    234                                 } catch (Exception e) { 
    235                                         throw (Exception) HLogMgr.hAddMessage(e, "Echec à la compilation de la XSL."); 
    236                                 } 
    237                                 //Boucle sur tous les items. 
    238                                 List vItems = new ArrayList(); 
    239                                 IHContentAccess vContentAccess = fWorkspace.hGetContentAccess(); 
    240                                 IHReqItemOfType vReq = (IHReqItemOfType) fWorkspace.hGetRepository().hCreateReqItem(IHReqItemOfType.class); 
    241                                 vReq.hSetValues(fItemType.hGetSpace(), fItemType.hGetCode()); 
    242                                 fWorkspace.hListItemDefs(vItems, vReq, null); 
    243                                 for (int i = 0; i < vItems.size(); i++) { 
    244                                         HItemDef vItemDef = (HItemDef) vItems.get(i); 
    245                                         HStreamHandler vStream = null; 
    246                                         IHItemType vItemType = null; 
    247                                         try { 
    248                                                 if (!vContentAccess.hIsMultiStream(fItemType.hGetContentFormat())) { 
    249                                                         //Racine de l'item 
    250                                                         InputStream vInputStream = vContentAccess.hReadStream(vItemDef, null, null, null, null); 
    251                                                         if (vInputStream != null) { 
    252                                                                 HXPathContextDyn vXPathContext = new HXPathContextDyn(); 
    253                                                                 DTM vDtm = vXPathContext.hGetDtm(vInputStream, null, true); 
    254                                                                 HTransformerXalanDyn vTransf = new HTransformerXalanDyn((StylesheetRoot) vXsl, vXPathContext); 
    255                                                                 if (vXPathContext.hGetDoctypePublic() != null) { 
    256                                                                         vTransf.setOutputProperty("doctype-public", vXPathContext.hGetDoctypePublic()); 
    257                                                                 } 
    258                                                                 if (vXPathContext.hGetDoctypeSystem() != null) { 
    259                                                                         vTransf.setOutputProperty("doctype-system", vXPathContext.hGetDoctypeSystem()); 
    260                                                                 } 
    261                                                                 HBufferStream vBuffStream = new HBufferStream(); 
    262                                                                 vTransf.transformNode(vDtm.getDocument(), new StreamResult(vBuffStream)); 
    263                                                                 vStream = new HStreamHandler(vBuffStream.hGetInputStream(true)); 
    264                                                         } 
    265                                                 } 
    266                                                 vItemType = HTreatIdentif.xFindItemType(fWorkspace, vItemDef.getUri(), vStream); 
    267                                                 if (vItemType != null) { 
    268                                                         vItemType.hGetModuleSave().hSaveItem(vItemDef, null, vStream, hGetUser().hGetAccount(), ((IContextBdp) hGetContext()).getClientId(), null); 
    269                                                 } 
    270                                         } catch (Throwable e) { 
    271                                                 HLogMgr.hPublishException(e); 
    272                                         } finally { 
    273                                                 if (vStream != null) { 
    274                                                         vStream.hCloseAndPurgeCache(); 
    275                                                 } 
    276                                         } 
    277                                 } 
    278                                 */ 
    279183                        } 
    280184                } else { 
  • trunk/Jav_Wsp/src/com/scenari/m/bdp/service/viewobject/HSDialogViewObject.java

    r19260 r19623  
    359359                // On calcule la page résultat. 
    360360                if (vCdAction.equals(CDACTION_GETITEM)) { 
    361                         if (xParseUri(IHWorkspace.RIGHT_READ)) { 
    362                                 if (fCodeItem != null) { 
    363                                         ISrcNode vSrc = fWorkspace.findNodeByUri(fUri); 
    364                                         fItem = vSrc.getAspect(IWspSrc.ITEM_ASPECT_TYPE); 
    365                                         if (fItem == null) { 
    366                                                 fItem = fWorkspace.createItem(null, fUri); 
    367                                         } 
    368                                 } 
    369                                 fPageResultat = sPageResultatGetItem; 
     361                        xParseUri(); 
     362                        if (fCodeItem != null) { 
     363                                ISrcNode vSrc = fWorkspace.findNodeByUri(fUri); 
     364                                fItem = vSrc.getAspect(IWspSrc.ITEM_ASPECT_TYPE); 
     365                                if (fItem == null) { 
     366                                        fItem = fWorkspace.createItem(null, fUri); 
     367                                } 
    370368                        } 
     369                        fPageResultat = sPageResultatGetItem; 
    371370                } 
    372371 
     
    374373                else if (CDACTION_DOWNLOAD.equals(vCdAction) || vCdAction.equals(CDACTION_SHOWCONTENT) || vCdAction.equals(CDACTION_FILEPATH)) { 
    375374                        try { 
    376                                 if (xParseUri(IHWorkspace.RIGHT_READ)) { 
    377                                         if (fCodeItem != null) { 
    378                                                 IWspSrc vSrc = fWorkspace.findNodeByUri(fUri); 
    379                                                 IItemDef vItemDef = vSrc.getAspect(IWspSrc.ITEMDEF_ASPECT_TYPE); 
    380                                                 if (vItemDef != null && vItemDef.getStatus() > 0) { 
    381                                                         HTransformParams vQs = null; 
    382                                                         if (fQS != null && fQS.length() > 0) { 
    383                                                                 vQs = HTransformParams.hNewParamsTransformByQueryString(fQS, "UTF-8", IFacet.PARAM_FACET); 
    384                                                         } 
    385                                                         if (vQs != null && vQs.hGetTransformType().equals(IFacet.PARAM_FACET)) { 
    386                                                                 // On interroge une facette de l'item 
    387                                                                 IItemType vItemType = fWorkspace.hGetItemType(vItemDef.getUriSs()); 
    388                                                                 if (vItemType != null) { 
    389                                                                         ISgnModule vSgnModule = vItemType.getSgnModule(vQs.hGetValueParam(IFacet.PARAM_FACET), fIdSubItem != null ? fWorkspace.hGetItem(fUri, null).getSubItemSgn(fIdSubItem) : vItemDef.getSignature()); 
    390                                                                         if (vSgnModule != null && vSgnModule instanceof IFacet) { 
    391                                                                                 IFacet vFacetModule = (IFacet) vSgnModule; 
    392                                                                                 ISrcNode vSrcFacet = vFacetModule.getFacet(vSrc, fIdSubItem, vQs); 
    393                                                                                 if (vSrcFacet != null && vSrcFacet.getContentStatus() == ISrcNode.STATUS_FILE) { 
    394                                                                                         if (vCdAction.equals(CDACTION_FILEPATH)) { 
    395                                                                                                 if (sAllowSendFilePath) { 
    396                                                                                                         String vPath = SrcFeatureAlternateUrl.getFilePath(vSrcFacet); 
    397                                                                                                         byte[] vRes = vPath != null ? vPath.getBytes("utf8") : new byte[0]; 
    398                                                                                                         fResultatStream = new HResultatStream(new ByteArrayInputStream(vRes), vRes.length, vSrcFacet.getTreeLastModif(), null, "text/plain"); 
    399                                                                                                 } else { 
    400                                                                                                         fResultatStream = new WResultatError(HWebdavCodes.SC_FORBIDDEN); 
    401                                                                                                 } 
     375                                xParseUri(); 
     376                                if (fCodeItem != null) { 
     377                                        IWspSrc vSrc = fWorkspace.findNodeByUri(fUri); 
     378                                        IItemDef vItemDef = vSrc.getAspect(IWspSrc.ITEMDEF_ASPECT_TYPE); 
     379                                        if (vItemDef != null && vItemDef.getStatus() > 0) { 
     380                                                HTransformParams vQs = null; 
     381                                                if (fQS != null && fQS.length() > 0) { 
     382                                                        vQs = HTransformParams.hNewParamsTransformByQueryString(fQS, "UTF-8", IFacet.PARAM_FACET); 
     383                                                } 
     384                                                if (vQs != null && vQs.hGetTransformType().equals(IFacet.PARAM_FACET)) { 
     385                                                        // On interroge une facette de l'item 
     386                                                        IItemType vItemType = fWorkspace.hGetItemType(vItemDef.getUriSs()); 
     387                                                        if (vItemType != null) { 
     388                                                                ISgnModule vSgnModule = vItemType.getSgnModule(vQs.hGetValueParam(IFacet.PARAM_FACET), fIdSubItem != null ? fWorkspace.hGetItem(fUri, null).getSubItemSgn(fIdSubItem) : vItemDef.getSignature()); 
     389                                                                if (vSgnModule != null && vSgnModule instanceof IFacet) { 
     390                                                                        IFacet vFacetModule = (IFacet) vSgnModule; 
     391                                                                        ISrcNode vSrcFacet = vFacetModule.getFacet(vSrc, fIdSubItem, vQs); 
     392                                                                        if (vSrcFacet != null && vSrcFacet.getContentStatus() == ISrcNode.STATUS_FILE) { 
     393                                                                                if (vCdAction.equals(CDACTION_FILEPATH)) { 
     394                                                                                        if (sAllowSendFilePath) { 
     395                                                                                                String vPath = SrcFeatureAlternateUrl.getFilePath(vSrcFacet); 
     396                                                                                                byte[] vRes = vPath != null ? vPath.getBytes("utf8") : new byte[0]; 
     397                                                                                                fResultatStream = new HResultatStream(new ByteArrayInputStream(vRes), vRes.length, vSrcFacet.getTreeLastModif(), null, "text/plain"); 
    402398                                                                                        } else { 
    403                                                                                                 String vName = xGetFileNameForDownload(vCdAction); 
    404                                                                                                 fResultatStream = new HResultatStream(vSrcFacet.newInputStream(false), vSrcFacet.getContentSize(), vSrcFacet.getLastModif(), vName, vSrcFacet.getContentType()); 
     399                                                                                                fResultatStream = new WResultatError(HWebdavCodes.SC_FORBIDDEN); 
    405400                                                                                        } 
     401                                                                                } else { 
     402                                                                                        String vName = xGetFileNameForDownload(vCdAction); 
     403                                                                                        fResultatStream = new HResultatStream(vSrcFacet.newInputStream(false), vSrcFacet.getContentSize(), vSrcFacet.getLastModif(), vName, vSrcFacet.getContentType()); 
    406404                                                                                } 
    407405                                                                        } 
    408406                                                                } 
    409                                                                 if (fResultatStream == null) { 
     407                                                        } 
     408                                                        if (fResultatStream == null) { 
     409                                                                fResultatStream = new WResultatError(HWebdavCodes.SC_NOT_FOUND); 
     410                                                        } 
     411                                                } else { 
     412                                                        // On interroge la ressource directement 
     413                                                        if (vCdAction.equals(CDACTION_FILEPATH)) { 
     414                                                                if (sAllowSendFilePath) { 
     415                                                                        String vPath = fWorkspace.hGetContentAccess().hGetUrlFileFormat(vItemDef, hGetUriRes(), vQs, null); 
     416                                                                        byte[] vRes = vPath != null ? vPath.getBytes("utf8") : new byte[0]; 
     417                                                                        fResultatStream = new HResultatStream(new ByteArrayInputStream(vRes), vRes.length, System.currentTimeMillis(), null, "text/plain"); 
     418                                                                } else { 
     419                                                                        fResultatStream = new WResultatError(HWebdavCodes.SC_FORBIDDEN); 
     420                                                                } 
     421                                                        } else { 
     422                                                                IHResource vRes = fWorkspace.hGetContentAccess().hGetResource(vItemDef, hGetUriRes(), vQs, null); 
     423                                                                if (vRes != null) { 
     424                                                                        String vName = xGetFileNameForDownload(vCdAction); 
     425                                                                        fResultatStream = new HResultatStream(vRes.hGetInputStream(), vRes.hGetLength(), vRes.hGetLastModif().getTime(), vName, vRes.hGetContentType()); 
     426                                                                } else { 
    410427                                                                        fResultatStream = new WResultatError(HWebdavCodes.SC_NOT_FOUND); 
    411428                                                                } 
    412                                                         } else { 
    413                                                                 // On interroge la ressource directement 
    414                                                                 if (vCdAction.equals(CDACTION_FILEPATH)) { 
    415                                                                         if (sAllowSendFilePath) { 
    416                                                                                 String vPath = fWorkspace.hGetContentAccess().hGetUrlFileFormat(vItemDef, hGetUriRes(), vQs, null); 
    417                                                                                 byte[] vRes = vPath != null ? vPath.getBytes("utf8") : new byte[0]; 
    418                                                                                 fResultatStream = new HResultatStream(new ByteArrayInputStream(vRes), vRes.length, System.currentTimeMillis(), null, "text/plain"); 
    419                                                                         } else { 
    420                                                                                 fResultatStream = new WResultatError(HWebdavCodes.SC_FORBIDDEN); 
    421                                                                         } 
    422                                                                 } else { 
    423                                                                         IHResource vRes = fWorkspace.hGetContentAccess().hGetResource(vItemDef, hGetUriRes(), vQs, null); 
    424                                                                         if (vRes != null) { 
    425                                                                                 String vName = xGetFileNameForDownload(vCdAction); 
    426                                                                                 fResultatStream = new HResultatStream(vRes.hGetInputStream(), vRes.hGetLength(), vRes.hGetLastModif().getTime(), vName, vRes.hGetContentType()); 
    427                                                                         } else { 
    428                                                                                 fResultatStream = new WResultatError(HWebdavCodes.SC_NOT_FOUND); 
    429                                                                         } 
    430                                                                 } 
    431429                                                        } 
    432                                                 } else { 
    433                                                         fResultatStream = new WResultatError(HWebdavCodes.SC_NOT_FOUND); 
    434                                                         // throw HLogMgr.hNewException("Item nul."); 
    435430                                                } 
    436431                                        } else { 
    437                                                 throw LogMgr.newException("L'uri définissant cet item est incorrecte."); 
     432                                                fResultatStream = new WResultatError(HWebdavCodes.SC_NOT_FOUND); 
     433                                                // throw HLogMgr.hNewException("Item nul."); 
    438434                                        } 
     435                                } else { 
     436                                        throw LogMgr.newException("L'uri définissant cet item est incorrecte."); 
    439437                                } 
    440438                        } catch (Exception e) { 
     
    454452                // 
    455453                else if (CDACTION_GETITEMDEF.equals(vCdAction)) { 
    456                         if (xParseUri(IHWorkspace.RIGHT_READ)) { 
    457                                 if (fCodeItem != null) { 
    458                                         fItem = fWorkspace.hGetItemDef(fUri, null); 
    459                                 } else { 
    460                                         fItem = new ItemDef(fWorkspace, null); 
    461                                 } 
    462                                 fPageResultat = sPageResultatGetItemDef; 
     454                        xParseUri(); 
     455                        if (fCodeItem != null) { 
     456                                fItem = fWorkspace.hGetItemDef(fUri, null); 
     457                        } else { 
     458                                fItem = new ItemDef(fWorkspace, null); 
    463459                        } 
     460                        fPageResultat = sPageResultatGetItemDef; 
    464461                } 
    465462 
    466463                // 
    467464                else if (CDACTION_GETITEMNET.equals(vCdAction)) { 
    468                         if (xParseUri(IHWorkspace.RIGHT_READ)) { 
    469                                 if (fCodeItem != null) { 
    470                                         IHReqItNet[] vReqs = null; 
    471                                         int vDepth = 0; 
    472                                         if (fQS != null) { 
    473                                                 HParamsQueryString vParams = new HParamsQueryString(fQS); 
    474                                                 List vListReq = new ArrayList(); 
    475                                                 xFillListReqItemNet(vListReq, vParams, "RefDesc", HItemDefVersNet.POINTER_REF_DESC); 
    476                                                 xFillListReqItemNet(vListReq, vParams, "RefAsc", HItemDefVersNet.POINTER_REF_ASC); 
    477                                                 if (vListReq.size() > 0) { 
    478                                                         vReqs = new IHReqItNet[vListReq.size()]; 
    479                                                         vListReq.toArray(vReqs); 
    480                                                 } 
    481                                                 String vDep = vParams.hGetValue("Depth"); 
    482                                                 if (vDep != null && !vDep.equals("")) { 
    483                                                         try { 
    484                                                                 vDepth = Integer.parseInt(vDep); 
    485                                                         } catch (Exception e) { 
    486                                                                 LogMgr.publishException(e); 
    487                                                         } 
     465                        xParseUri(); 
     466                        if (fCodeItem != null) { 
     467                                IHReqItNet[] vReqs = null; 
     468                                int vDepth = 0; 
     469                                if (fQS != null) { 
     470                                        HParamsQueryString vParams = new HParamsQueryString(fQS); 
     471                                        List vListReq = new ArrayList(); 
     472                                        xFillListReqItemNet(vListReq, vParams, "RefDesc", HItemDefVersNet.POINTER_REF_DESC); 
     473                                        xFillListReqItemNet(vListReq, vParams, "RefAsc", HItemDefVersNet.POINTER_REF_ASC); 
     474                                        if (vListReq.size() > 0) { 
     475                                                vReqs = new IHReqItNet[vListReq.size()]; 
     476                                                vListReq.toArray(vReqs); 
     477                                        } 
     478                                        String vDep = vParams.hGetValue("Depth"); 
     479                                        if (vDep != null && !vDep.equals("")) { 
     480                                                try { 
     481                                                        vDepth = Integer.parseInt(vDep); 
     482                                                } catch (Exception e) { 
     483                                                        LogMgr.publishException(e); 
    488484                                                } 
    489485                                        } 
    490                                         if (vReqs == null) { 
    491                                                 // Reqêtes par défaut. 
    492                                                 vReqs = new IHReqItNet[1]; 
    493                                                 vReqs[0] = fWorkspace.hCreateReqItemNet(IHReqItNetBase.class); 
    494                                                 ((IHReqItNetBase) vReqs[0]).hSetValues(HItemDefVersNet.POINTER_REF_DESC, null, null); 
    495                                         } 
    496                                         fItemDefVersNet = fWorkspace.hGetItemDefVersNet(fUri, vReqs, vDepth, null); 
    497                                         fPageResultat = sPageResultatGetItemNet; 
    498                                 } 
     486                                } 
     487                                if (vReqs == null) { 
     488                                        // Reqêtes par défaut. 
     489                                        vReqs = new IHReqItNet[1]; 
     490                                        vReqs[0] = fWorkspace.hCreateReqItemNet(IHReqItNetBase.class); 
     491                                        ((IHReqItNetBase) vReqs[0]).hSetValues(HItemDefVersNet.POINTER_REF_DESC, null, null); 
     492                                } 
     493                                fItemDefVersNet = fWorkspace.hGetItemDefVersNet(fUri, vReqs, vDepth, null); 
     494                                fPageResultat = sPageResultatGetItemNet; 
    499495                        } 
    500496                } 
     
    527523        } 
    528524 
    529         protected boolean xParseUri(String pWspAccess) throws Exception { 
     525        protected void xParseUri() throws Exception { 
    530526                String vParam = getParam(); 
    531527                String vFullUri = vParam; 
     
    539535                fWorkspace = ((WServiceViewObject) fService).hGetRepository(this).getWsp(fWspCd, true); 
    540536                if (fWorkspace == null) throw LogMgr.newException("Le workspace '" + fWspCd + "' est inconnu."); 
    541                 if (pWspAccess != null) { 
    542                         if (!fWorkspace.hCheckRight(getContextUser(), pWspAccess)) { 
    543                                 fErrorCode = HWebdavCodes.SC_FORBIDDEN; 
    544                                 fPageResultat = sPageResultatError; 
    545                                 return false; 
    546                         } 
    547                 } 
    548537                fUri = WspUri.extractSrcUriFromFullUri(vFullUri); 
    549538                fIdSubItem = WspUri.extractFragmentIdFromFullUri(vFullUri); 
    550539 
    551540                fCodeItem = HQCode.hGetCodeFromUri(fUri); 
    552  
    553                 return true; 
    554541        } 
    555542 
  • trunk/Jav_Wsp/src/eu/scenari/wsp/service/gen/SvcWspGenDialog.java

    r19260 r19623  
    5454import com.scenari.src.ISrcContent; 
    5555import com.scenari.src.ISrcNode; 
     56import com.scenari.src.ISrcServer; 
    5657import com.scenari.src.feature.ids.SrcFeatureIds; 
     58import com.scenari.src.feature.roles.SrcFeatureRoles; 
    5759import com.scenari.src.feature.streams.SrcFeatureStreams; 
    5860 
     
    6264import eu.scenari.commons.mime.MimeMgr; 
    6365import eu.scenari.commons.pools.PoolBuffers; 
     66import eu.scenari.commons.security.ScSecurity; 
     67import eu.scenari.commons.security.ScSecurityException; 
    6468import eu.scenari.commons.user.IUser; 
    6569import eu.scenari.core.dialog.IContext; 
     
    437441                                        IHWorkspace vWspDest = fWorkspace.hGetRepository().getWsp(vDestWspCd, true); 
    438442                                        if (vWspDest == null) throw LogMgr.newException("Le workspace de destination de la génération '" + vDestWspCd + "' est inconnu."); 
    439                                         if (!vWspDest.hCheckRight(getContextUser(), IHWorkspace.RIGHT_READ)) { 
    440                                                 fDialogResult = new WResultatError(HWebdavCodes.SC_FORBIDDEN); 
    441                                                 return vResult; 
     443                                        if (ScSecurity.isEnhancedSecurity()) { 
     444                                                vWspDest.getExtPoints().checkPermission(SvcWspGenPermReg.CUSTOMDESTPATH, SrcFeatureRoles.getRoles(vWspDest.findNodeByUri(ISrcServer.URI_ROOT))); 
    442445                                        } 
    443446                                        String vUri = WspUri.extractSrcUriFromFullUri(fParamCustomDestPath); 
     
    510513                                                        IHWorkspace vWspSkin = fWorkspace.hGetRepository().getWsp(vSkinWspCd, true); 
    511514                                                        if (vWspSkin == null) throw LogMgr.newException("Le workspace du skin de la génération '%s' est inconnu.", vSkinWspCd); 
    512                                                         if (!vWspSkin.hCheckRight(getContextUser(), IHWorkspace.RIGHT_READ)) { 
    513                                                                 fDialogResult = new WResultatError(HWebdavCodes.SC_FORBIDDEN); 
    514                                                                 return vResult; 
     515                                                        if (ScSecurity.isEnhancedSecurity()) { 
     516                                                                vWspSkin.getExtPoints().checkPermission(SvcWspGenPermReg.CUSTOMSKINPATH, SrcFeatureRoles.getRoles(vWspSkin.findNodeByUri(ISrcServer.URI_ROOT))); 
    515517                                                        } 
    516518                                                        String vUri = WspUri.extractSrcUriFromFullUri(vFullSkinUri); 
     
    553555                                vResult = super.xExecuteDialog(); 
    554556                        } 
     557                } catch (ScSecurityException e) { 
     558                        fDialogResult = new WResultatError(HWebdavCodes.SC_FORBIDDEN, LogMgr.getMessage(e)); 
     559                        return vResult; 
    555560                } catch (Exception e) { 
    556561                        fError = LogMgr.getMessage(e); 
  • trunk/Jav_WspFs/src/eu/scenari/wspfs/FsWspDefinition.java

    r19585 r19623  
    4242import java.io.OutputStream; 
    4343import java.security.acl.Permission; 
    44 import java.util.Iterator; 
    45 import java.util.List; 
    4644import java.util.Map; 
    4745 
     
    5048import org.xml.sax.XMLReader; 
    5149 
    52 import com.scenari.m.co.user.IHActorMgr; 
    53 import com.scenari.serializer.simple.IXmlWriter; 
    5450import com.scenari.src.ISrcNode; 
    5551import com.scenari.src.ISrcServer; 
     
    225221                //              vWsp.xUpdateListUsers(pStream); 
    226222                //              xGetDomain().xSaveWspList(); 
    227         } 
    228  
    229         /** 
    230          * Sérialisation des droits d'accès à ce Wsp. 
    231          */ 
    232         public static void writeRights(IXmlWriter pXmlWriter, IHActorMgr pActorMgr) throws Exception { 
    233                 if (pActorMgr != null) { 
    234                         pXmlWriter.writeOpenTag("access"); 
    235                         int vNbRoles = pActorMgr.hGetRoles().size(); 
    236                         for (Iterator iter = pActorMgr.hGetUsers(); iter.hasNext();) { 
    237                                 String vUser = (String) iter.next(); 
    238                                 List vList = pActorMgr.hGetRolesByUser(vUser); 
    239                                 if (vList.size() > 0) { 
    240                                         pXmlWriter.writeStartTag("user"); 
    241                                         pXmlWriter.writeAttribute("account", vUser); 
    242                                         if (vList.size() != vNbRoles) { 
    243                                                 // Si le user a tous les droits, on ne spécifie rien. 
    244                                                 StringBuilder vBuf = new StringBuilder(vList.size() * 12); 
    245                                                 vBuf.append((String) vList.get(0)); 
    246                                                 for (int j = 1; j < vList.size(); j++) { 
    247                                                         vBuf.append(' '); 
    248                                                         vBuf.append((String) vList.get(j)); 
    249                                                 } 
    250                                                 pXmlWriter.writeAttribute("rights", vBuf.toString()); 
    251                                         } 
    252                                         pXmlWriter.writeEndEmptyTag(); 
    253                                 } 
    254                         } 
    255                         pXmlWriter.writeCloseTag("access"); 
    256                 } 
    257223        } 
    258224 
Note: See TracChangeset for help on using the changeset viewer.