Changeset 19623
- Timestamp:
- 02/01/12 22:07:43 (4 months ago)
- Location:
- trunk
- Files:
-
- 9 added
- 2 deleted
- 22 edited
-
Jav_Commons/src/eu/scenari/commons/extpoints (added)
-
Jav_Commons/src/eu/scenari/commons/extpoints/ExtPoints.java (added)
-
Jav_Commons/src/eu/scenari/commons/extpoints/RoleConfig.java (added)
-
Jav_Commons/src/eu/scenari/commons/extpoints/SubExtPoints.java (added)
-
Jav_Commons/src/eu/scenari/commons/security/Access.java (modified) (1 diff)
-
Jav_Commons/src/eu/scenari/commons/security/IPermission.java (modified) (1 diff)
-
Jav_Commons/src/eu/scenari/commons/security/IPermissionRoleController.java (modified) (1 diff)
-
Jav_Commons/src/eu/scenari/commons/security/PermRegRoot.java (added)
-
Jav_Commons/src/eu/scenari/commons/security/PermissionMgr.java (modified) (1 diff)
-
Jav_Commons/src/eu/scenari/commons/security/ScSecurity.java (added)
-
Jav_Commons/src/eu/scenari/commons/security/ScSecurityException.java (added)
-
Jav_Core/src/com/scenari/m/co/univers/IWUnivers.java (modified) (2 diffs)
-
Jav_Core/src/com/scenari/m/co/univers/WUnivers.java (modified) (6 diffs)
-
Jav_Core/src/com/scenari/m/co/user/HActorMgrInMem.java (deleted)
-
Jav_Core/src/com/scenari/m/co/user/IHActorMgr.java (deleted)
-
Jav_Moz_Wsp/src/com/scenari/i/ihmcms/serv/HTabItemType.java (modified) (1 diff)
-
Jav_Src/src/com/scenari/src/feature/roles/SrcFeatureRoles.java (modified) (2 diffs)
-
Jav_Wsp/src/com/scenari/m/bdp/item/IHWorkspace.java (modified) (4 diffs)
-
Jav_Wsp/src/com/scenari/m/bdp/item/fs/HWorkspaceFs.java (modified) (5 diffs)
-
Jav_Wsp/src/com/scenari/m/bdp/item/fs/HWspMaster.java (modified) (3 diffs)
-
Jav_Wsp/src/com/scenari/m/bdp/item/fs/HWspSlave.java (modified) (2 diffs)
-
Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspHandler.java (modified) (5 diffs)
-
Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspHandlerMaster.java (modified) (1 diff)
-
Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspHandlerSlave.java (modified) (1 diff)
-
Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspSrcNodeItem.java (modified) (2 diffs)
-
Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspSrcNodeSpace.java (modified) (2 diffs)
-
Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspSrcUtil.java (modified) (3 diffs)
-
Jav_Wsp/src/com/scenari/m/bdp/service/tabitemtype/HSDialogTabItemType.java (modified) (4 diffs)
-
Jav_Wsp/src/com/scenari/m/bdp/service/tabitemtype/SvcItemTypePermReg.java (added)
-
Jav_Wsp/src/com/scenari/m/bdp/service/viewobject/HSDialogViewObject.java (modified) (5 diffs)
-
Jav_Wsp/src/eu/scenari/wsp/service/gen/SvcWspGenDialog.java (modified) (5 diffs)
-
Jav_Wsp/src/eu/scenari/wsp/service/gen/SvcWspGenPermReg.java (added)
-
Jav_WspFs/src/eu/scenari/wspfs/FsWspDefinition.java (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Jav_Commons/src/eu/scenari/commons/security/Access.java
r18986 r19623 40 40 41 41 public enum Access { 42 allowed, den y, unknown42 allowed, denied, unknown 43 43 } 44 44 -
trunk/Jav_Commons/src/eu/scenari/commons/security/IPermission.java
r18986 r19623 39 39 package eu.scenari.commons.security; 40 40 41 public interface IPermission extends java.security.acl.Permission { 41 public interface IPermission { 42 43 public String getName(); 44 45 public int getSystemRights(); 46 42 47 public IPermission getParent(); 43 48 44 public IPermission[] getFlatennedPermissons();49 //public IPermission[] getFlatennedPermissons(); 45 50 } 46 47 -
trunk/Jav_Commons/src/eu/scenari/commons/security/IPermissionRoleController.java
r18986 r19623 39 39 package eu.scenari.commons.security; 40 40 41 import java.util. List;41 import java.util.Collection; 42 42 43 /** 44 * 45 */ 43 46 public 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); ? 48 55 } 49 50 -
trunk/Jav_Commons/src/eu/scenari/commons/security/PermissionMgr.java
r18986 r19623 39 39 package eu.scenari.commons.security; 40 40 41 import java.util.HashMap; 42 import java.util.Map; 43 41 44 public 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 44 92 } 45 93 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; 48 118 } 49 119 50 120 /** 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 // } 52 124 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; 53 130 } 54 131 } 55 -
trunk/Jav_Core/src/com/scenari/m/co/univers/IWUnivers.java
r18986 r19623 42 42 import com.scenari.src.ISrcNode; 43 43 44 import eu.scenari.commons.extpoints.ExtPoints; 45 import eu.scenari.commons.security.PermissionMgr; 44 46 import eu.scenari.commons.user.IUser; 45 47 import eu.scenari.commons.user.IUserMgr; … … 56 58 */ 57 59 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(); 58 70 59 71 /** -
trunk/Jav_Core/src/com/scenari/m/co/univers/WUnivers.java
r18986 r19623 47 47 import com.scenari.src.system.ISrcSystem; 48 48 49 import eu.scenari.commons.extpoints.ExtPoints; 49 50 import eu.scenari.commons.log.LogMgr; 51 import eu.scenari.commons.security.PermissionMgr; 50 52 import eu.scenari.commons.user.IUser; 51 53 import eu.scenari.commons.user.IUserMgr; … … 62 64 protected String fCode = null; 63 65 64 protected HashMap f Espaces = new HashMap();66 protected HashMap fSpaces = new HashMap(); 65 67 66 68 /** Manager des acteurs. */ … … 75 77 /** Contextes d'execution de l'univers. */ 76 78 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; 77 89 78 90 /** … … 101 113 public IUserMgr getUserMgr() { 102 114 return fUserMgr; 115 } 116 117 public ExtPoints getExtPoints() { 118 return fExtPoints; 119 } 120 121 public PermissionMgr getPermissionMgr() { 122 return fPermMgr; 103 123 } 104 124 … … 152 172 */ 153 173 public final ISrcNode hGetEspace(String pCodeEspace) throws Exception { 154 ISrcSystem vSourceSystem = (ISrcSystem) f Espaces.get(pCodeEspace);174 ISrcSystem vSourceSystem = (ISrcSystem) fSpaces.get(pCodeEspace); 155 175 return vSourceSystem != null ? vSourceSystem.getStartSrcNode() : null; 156 176 } … … 171 191 */ 172 192 public final void hSetEspace(String pCode, ISrcSystem pSourceSystem) { 173 f Espaces.put(pCode, pSourceSystem);193 fSpaces.put(pCode, pSourceSystem); 174 194 } 175 195 -
trunk/Jav_Moz_Wsp/src/com/scenari/i/ihmcms/serv/HTabItemType.java
r19260 r19623 60 60 public class HTabItemType extends SenderHttpResponseBase { 61 61 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 */70 62 public void xSendDialogResult(IDialog pDialog, HttpServletRequest pReq, HttpServletResponse pResp) throws Exception { 71 63 -
trunk/Jav_Src/src/com/scenari/src/feature/roles/SrcFeatureRoles.java
r18986 r19623 39 39 package com.scenari.src.feature.roles; 40 40 41 import java.util.Set;42 43 41 import com.scenari.src.aspect.ISrcAspectDef; 44 42 import com.scenari.src.aspect.ISrcAspectable; … … 68 66 * @return <code>null</code> si aucun aspect ne gère les roles. 69 67 */ 70 public static Set<String>getRoles(ISrcAspectable pSrc) throws Exception {68 public static RolesSet getRoles(ISrcAspectable pSrc) throws Exception { 71 69 IUserRoles vAspect = pSrc.getAspect(USERROLES_ASPECT); 72 70 if (vAspect != null) return vAspect.overrideRoles(null); -
trunk/Jav_Wsp/src/com/scenari/m/bdp/item/IHWorkspace.java
r19260 r19623 51 51 import com.scenari.src.ISrcServer; 52 52 53 import eu.scenari.commons.extpoints.ExtPoints; 54 import eu.scenari.commons.security.PermissionMgr; 53 55 import eu.scenari.commons.stream.bytes.IByteStream; 54 import eu.scenari.commons.user.IUser;55 56 import eu.scenari.core.agt.IAgtProvider; 56 57 import eu.scenari.wsp.item.IItem; … … 68 69 public interface IHWorkspace extends IServiceProvider { 69 70 70 public static final String RIGHT_READ = "Read";71 72 public static final String RIGHT_WRITE = "Write";73 74 71 /** 75 72 * Demande d'être notifié à chaque modification / suppression de tout item du … … 123 120 */ 124 121 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);133 122 134 123 /** … … 304 293 public IWspService getService(String pSvcCode); 305 294 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 306 306 /** Méthodes exploitées en interne par les modules ou l'Api Src. */ 307 307 public interface IWorkspaceInternal extends IHWorkspace { -
trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/HWorkspaceFs.java
r19275 r19623 69 69 import com.scenari.m.bdp.module.save.HStreamHandler; 70 70 import com.scenari.m.bdp.transaction.IHTransaction; 71 import com.scenari.m.co.user.IHActorMgr;72 71 import com.scenari.s.co.transform.HTransformParams; 73 72 import com.scenari.s.fw.utils.HIntArrayList; … … 100 99 import eu.scenari.wsp.item.impl.ItemDef; 101 100 import eu.scenari.wsp.objecttype.IItemType; 101 import eu.scenari.wsp.objecttype.IItemType.IItemTypeInternal; 102 102 import eu.scenari.wsp.objecttype.ItemType; 103 import eu.scenari.wsp.objecttype.IItemType.IItemTypeInternal;104 103 import eu.scenari.wsp.provider.IWspDefinition; 105 104 import eu.scenari.wsp.repos.IRepository; … … 116 115 * 117 116 */ 118 public class HWorkspaceFs implements IWorkspaceInternal, ISrcServer, ISearchAspect, IMemoryOwner {117 public abstract class HWorkspaceFs implements IWorkspaceInternal, ISrcServer, ISearchAspect, IMemoryOwner { 119 118 120 119 /** Les items de cet atelier n'ont pas été chargés exhaustivement. */ … … 177 176 /** Statut de chargement du réseau d'items de cet atelier. */ 178 177 protected volatile int fStatusItemLoaded = STATUS_ALL_ITEM_LOADED_NO; 179 180 /** Gestion des droits. */181 protected IHActorMgr fActorMgr = null;182 178 183 179 /** */ … … 495 491 496 492 /** 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 /**512 493 * @see com.scenari.m.bdp.item.IHWorkspace#hGetRepository() 513 494 */ -
trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/HWspMaster.java
r19317 r19623 52 52 import com.scenari.src.helpers.util.SrcServerMultiSources; 53 53 54 import eu.scenari.commons.extpoints.ExtPoints; 55 import eu.scenari.commons.extpoints.SubExtPoints; 54 56 import eu.scenari.commons.log.ILogMsg.LogType; 55 57 import eu.scenari.commons.log.LogMgr; 58 import eu.scenari.commons.security.PermissionMgr; 56 59 import eu.scenari.wsp.item.IItem; 57 60 import eu.scenari.wsp.item.IItemDef; … … 59 62 import eu.scenari.wsp.item.impl.Item; 60 63 import eu.scenari.wsp.objecttype.IItemType; 64 import eu.scenari.wsp.objecttype.IItemType.IItemTypeInternal; 61 65 import eu.scenari.wsp.objecttype.ItemType; 62 import eu.scenari.wsp.objecttype.IItemType.IItemTypeInternal;63 66 import eu.scenari.wsp.provider.IWspDefinition; 64 67 … … 77 80 protected SrcServerMultiSources fSrcServerMultiSources = null; 78 81 82 protected SubExtPoints fExtPoints; 83 84 protected PermissionMgr fPermMgr; 85 79 86 public HWspMaster(HRepositoryFsBase pRepository, IWspDefinition pWspDef) { 80 87 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; 81 98 } 82 99 -
trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/HWspSlave.java
r19317 r19623 55 55 import com.scenari.wsp.src.search.SearchExecutorWsp; 56 56 57 import eu.scenari.commons.extpoints.ExtPoints; 58 import eu.scenari.commons.security.PermissionMgr; 57 59 import eu.scenari.wsp.objecttype.IItemType; 58 60 import eu.scenari.wsp.provider.IWspDefinition; … … 68 70 public HWspSlave(HRepositoryFsBase pRepository, IWspDefinition pWspDef) { 69 71 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(); 70 82 } 71 83 -
trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspHandler.java
r19585 r19623 48 48 49 49 import com.scenari.m.bdp.item.IHWorkspace; 50 import com.scenari.m.co.user.HActorMgrInMem;51 50 import com.scenari.serializer.simple.IXmlWriter; 52 51 import com.scenari.serializer.simple.XmlWriterAppendable; … … 59 58 import eu.scenari.commons.log.LogMgr; 60 59 import eu.scenari.commons.stream.bytes.OutputStreamBlob; 61 import eu.scenari.commons.user.IUser;62 60 import eu.scenari.wsp.pack.IPackMgr; 63 61 import eu.scenari.wsp.provider.IWspDefinition; … … 83 81 /** UpdtMgr de ce wsp. */ 84 82 protected IResMgr fUpdtMgrWsp = null; 85 86 /** Gestion des droits d'accès au repository. */87 protected HActorMgrInMem fActorMgr = null;88 83 89 84 /** … … 391 386 fWsp = new HWspStandAlone(fRepos, fWspDefinition); 392 387 fWsp.fCheckUpdateItems = fRepos.fCheckUpdateItems; 393 fWsp.fActorMgr = fActorMgr;394 388 } 395 389 … … 687 681 notifyAll(); 688 682 } 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 }704 683 } -
trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspHandlerMaster.java
r19585 r19623 143 143 fWsp = new HWspMaster(fRepos, fWspDefinition); 144 144 fWsp.fCheckUpdateItems = sCheckUpdateItems; 145 fWsp.fActorMgr = fActorMgr;146 145 } 147 146 -
trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspHandlerSlave.java
r19181 r19623 62 62 protected void xCreateWsp() { 63 63 this.fWsp = new HWspSlave(fRepos, fWspDefinition); 64 this.fWsp.fCheckUpdateItems = fRepos.fCheckUpdateItems;65 this.fWsp.fActorMgr = this.fActorMgr;66 64 } 67 65 -
trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspSrcNodeItem.java
r19570 r19623 89 89 import com.scenari.src.feature.refresh.IRefreshAspect; 90 90 import com.scenari.src.feature.rights.IAccessRightsAspect; 91 import com.scenari.src.feature.rights.SrcFeatureRights; 91 92 import com.scenari.src.feature.roles.IUserRolesHook; 92 93 import com.scenari.src.feature.roles.SrcFeatureRoles; … … 322 323 323 324 public int getRights() throws Exception { 324 return WspSrcUtil.getRights(this);325 return SrcFeatureRights.getAllowedRights(getSubSrcNode()); 325 326 } 326 327 -
trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspSrcNodeSpace.java
r19570 r19623 61 61 import com.scenari.src.feature.ids.IFindUriByIdAspect; 62 62 import com.scenari.src.feature.rights.IAccessRightsAspect; 63 import com.scenari.src.feature.rights.SrcFeatureRights; 63 64 import com.scenari.src.feature.search.ISearchAspect; 64 65 import com.scenari.src.feature.tasks.ISrcTask; … … 208 209 209 210 public int getRights() throws Exception { 210 return WspSrcUtil.getRights(this);211 return SrcFeatureRights.getAllowedRights(getSubSrcNode()); 211 212 } 212 213 -
trunk/Jav_Wsp/src/com/scenari/m/bdp/item/fs/WspSrcUtil.java
r18986 r19623 39 39 package com.scenari.m.bdp.item.fs; 40 40 41 import com.scenari.m.bdp.item.IHWorkspace;42 41 import com.scenari.m.bdp.module.rename.IHRenamingPlan; 43 42 import com.scenari.src.ISrcNode; … … 45 44 import com.scenari.src.feature.ids.SrcFeatureIds; 46 45 import com.scenari.src.feature.paths.SrcFeaturePaths; 47 import com.scenari.src.feature.rights.SrcFeatureRights;48 46 49 47 import eu.scenari.commons.log.LogMgr; 50 48 import eu.scenari.commons.pools.PoolBuffers; 51 import eu.scenari.commons.user.IUser;52 import eu.scenari.commons.user.ThreadUser;53 49 import eu.scenari.wsp.item.IWspSrc; 54 50 import eu.scenari.wsp.item.IWspSrc.WspNodeType; … … 176 172 177 173 /** 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 seule188 return SrcFeatureRights.RIGHTS_READ & SrcFeatureRights.getAllowedRights(pWspNode.getSubSrcNode());189 }190 //Aucun droit.191 return 0;192 }193 194 /**195 174 * @return <code>true</code> si le dernier fragment de l'Uri est un espace interne d'un item. 196 175 */ -
trunk/Jav_Wsp/src/com/scenari/m/bdp/service/tabitemtype/HSDialogTabItemType.java
r19260 r19623 42 42 import com.scenari.m.bdp.module.IHModule; 43 43 import com.scenari.m.bdp.module.rename.HModuleRenameXsl; 44 import com.scenari.src.ISrcServer; 45 import com.scenari.src.feature.roles.SrcFeatureRoles; 44 46 45 47 import eu.scenari.commons.log.LogMgr; 48 import eu.scenari.commons.security.RolesSet; 49 import eu.scenari.commons.security.ScSecurity; 46 50 import eu.scenari.core.dialog.IDialog; 47 51 import eu.scenari.core.execframe.IExecFrame; … … 72 76 */ 73 77 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 à afficher78 * 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 à afficher87 * 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";94 78 95 79 public static String sPageResultat = "/serv/tabitemtype_compil.jsp"; … … 177 161 178 162 //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)) { 180 164 String vFullUri = getParam(); 181 165 String vWsp = WspUri.extractWspCdFromFullUri(vFullUri); 182 166 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 } 185 178 186 179 fItemType = fWorkspace.hGetItemType(WspUri.extractSrcUriFromFullUri(vFullUri)); … … 188 181 if (vCdAction.equals(CDACTION_MAKECOMPIL)) { 189 182 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'item205 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'item250 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 */279 183 } 280 184 } else { -
trunk/Jav_Wsp/src/com/scenari/m/bdp/service/viewobject/HSDialogViewObject.java
r19260 r19623 359 359 // On calcule la page résultat. 360 360 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 } 370 368 } 369 fPageResultat = sPageResultatGetItem; 371 370 } 372 371 … … 374 373 else if (CDACTION_DOWNLOAD.equals(vCdAction) || vCdAction.equals(CDACTION_SHOWCONTENT) || vCdAction.equals(CDACTION_FILEPATH)) { 375 374 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"); 402 398 } 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); 405 400 } 401 } else { 402 String vName = xGetFileNameForDownload(vCdAction); 403 fResultatStream = new HResultatStream(vSrcFacet.newInputStream(false), vSrcFacet.getContentSize(), vSrcFacet.getLastModif(), vName, vSrcFacet.getContentType()); 406 404 } 407 405 } 408 406 } 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 { 410 427 fResultatStream = new WResultatError(HWebdavCodes.SC_NOT_FOUND); 411 428 } 412 } else {413 // On interroge la ressource directement414 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 }431 429 } 432 } else {433 fResultatStream = new WResultatError(HWebdavCodes.SC_NOT_FOUND);434 // throw HLogMgr.hNewException("Item nul.");435 430 } 436 431 } 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."); 438 434 } 435 } else { 436 throw LogMgr.newException("L'uri définissant cet item est incorrecte."); 439 437 } 440 438 } catch (Exception e) { … … 454 452 // 455 453 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); 463 459 } 460 fPageResultat = sPageResultatGetItemDef; 464 461 } 465 462 466 463 // 467 464 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); 488 484 } 489 485 } 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; 499 495 } 500 496 } … … 527 523 } 528 524 529 protected boolean xParseUri(String pWspAccess) throws Exception {525 protected void xParseUri() throws Exception { 530 526 String vParam = getParam(); 531 527 String vFullUri = vParam; … … 539 535 fWorkspace = ((WServiceViewObject) fService).hGetRepository(this).getWsp(fWspCd, true); 540 536 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 }548 537 fUri = WspUri.extractSrcUriFromFullUri(vFullUri); 549 538 fIdSubItem = WspUri.extractFragmentIdFromFullUri(vFullUri); 550 539 551 540 fCodeItem = HQCode.hGetCodeFromUri(fUri); 552 553 return true;554 541 } 555 542 -
trunk/Jav_Wsp/src/eu/scenari/wsp/service/gen/SvcWspGenDialog.java
r19260 r19623 54 54 import com.scenari.src.ISrcContent; 55 55 import com.scenari.src.ISrcNode; 56 import com.scenari.src.ISrcServer; 56 57 import com.scenari.src.feature.ids.SrcFeatureIds; 58 import com.scenari.src.feature.roles.SrcFeatureRoles; 57 59 import com.scenari.src.feature.streams.SrcFeatureStreams; 58 60 … … 62 64 import eu.scenari.commons.mime.MimeMgr; 63 65 import eu.scenari.commons.pools.PoolBuffers; 66 import eu.scenari.commons.security.ScSecurity; 67 import eu.scenari.commons.security.ScSecurityException; 64 68 import eu.scenari.commons.user.IUser; 65 69 import eu.scenari.core.dialog.IContext; … … 437 441 IHWorkspace vWspDest = fWorkspace.hGetRepository().getWsp(vDestWspCd, true); 438 442 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))); 442 445 } 443 446 String vUri = WspUri.extractSrcUriFromFullUri(fParamCustomDestPath); … … 510 513 IHWorkspace vWspSkin = fWorkspace.hGetRepository().getWsp(vSkinWspCd, true); 511 514 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))); 515 517 } 516 518 String vUri = WspUri.extractSrcUriFromFullUri(vFullSkinUri); … … 553 555 vResult = super.xExecuteDialog(); 554 556 } 557 } catch (ScSecurityException e) { 558 fDialogResult = new WResultatError(HWebdavCodes.SC_FORBIDDEN, LogMgr.getMessage(e)); 559 return vResult; 555 560 } catch (Exception e) { 556 561 fError = LogMgr.getMessage(e); -
trunk/Jav_WspFs/src/eu/scenari/wspfs/FsWspDefinition.java
r19585 r19623 42 42 import java.io.OutputStream; 43 43 import java.security.acl.Permission; 44 import java.util.Iterator;45 import java.util.List;46 44 import java.util.Map; 47 45 … … 50 48 import org.xml.sax.XMLReader; 51 49 52 import com.scenari.m.co.user.IHActorMgr;53 import com.scenari.serializer.simple.IXmlWriter;54 50 import com.scenari.src.ISrcNode; 55 51 import com.scenari.src.ISrcServer; … … 225 221 // vWsp.xUpdateListUsers(pStream); 226 222 // 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 }257 223 } 258 224
Note: See TracChangeset
for help on using the changeset viewer.