/* * Copyright (C) 2003-2007 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see<http://www.gnu.org/licenses/>. */ package org.exoplatform.services.cms.drives.impl; import javax.jcr.Node; import org.apache.commons.lang.StringUtils; import org.exoplatform.container.xml.InitParams; import org.exoplatform.services.cms.BasePath; import org.exoplatform.services.cms.drives.ManageDriveService; import org.exoplatform.services.jcr.ext.common.SessionProvider; import org.exoplatform.services.jcr.ext.hierarchy.NodeHierarchyCreator; import org.exoplatform.services.organization.User; import org.exoplatform.services.organization.UserEventListener; import org.exoplatform.services.wcm.utils.WCMCoreUtils; /** * Created by The eXo Platform SARL * Author : Dang Van Minh * minh.dang@exoplatform.com * Nov 23, 2007 3:09:21 PM */ public class NewUserListener extends UserEventListener { private ManageDriveService driveService_ ; private InitParams initParams_ ; private NodeHierarchyCreator nodeHierarchyCreator_ ; private String userPath_ ; final static String PRIVATE_ALIAS = "userPrivate" ; final static String PUBLIC_ALIAS = "userPublic" ; /** * * @param driveService * @param nodeHierarchyCreatorService * @param params * @throws Exception */ public NewUserListener(ManageDriveService driveService, NodeHierarchyCreator nodeHierarchyCreatorService, InitParams params) throws Exception { nodeHierarchyCreator_ = nodeHierarchyCreatorService ; driveService_ = driveService ; initParams_ = params ; userPath_ = nodeHierarchyCreatorService.getJcrPath(BasePath.CMS_USERS_PATH) ; } /** * */ @SuppressWarnings({"unused"}) public void preSave(User user, boolean isNew) throws Exception { String workspace = initParams_.getValueParam("workspace").getValue(); String permissions = initParams_.getValueParam("permissions").getValue(); permissions = permissions.concat(","+ user.getUserName()); //Set personal drive home path SessionProvider sessionProvider = WCMCoreUtils.getSystemSessionProvider(); Node userNode = nodeHierarchyCreator_.getUserNode(sessionProvider, user.getUserName()); String homePath = userNode.getPath(); String views = initParams_.getValueParam("views").getValue(); String icon = initParams_.getValueParam("icon").getValue(); boolean viewPreferences = Boolean.parseBoolean(initParams_.getValueParam("viewPreferences").getValue()); boolean viewNonDocument = Boolean.parseBoolean(initParams_.getValueParam("viewNonDocument").getValue()); boolean viewSideBar = Boolean.parseBoolean(initParams_.getValueParam("viewSideBar").getValue()); boolean showHiddenNode = Boolean.parseBoolean(initParams_.getValueParam("showHiddenNode").getValue()); String allowCreateFolder = initParams_.getValueParam("allowCreateFolder").getValue(); String allowNodeTypesOnTree = initParams_.getValueParam("allowNodeTypesOnTree").getValue(); //Only user can access private drive String publicPath = nodeHierarchyCreator_.getJcrPath(PUBLIC_ALIAS) ; String privatePath = nodeHierarchyCreator_.getJcrPath(PRIVATE_ALIAS) ; //Get user relPath String userRelPath = StringUtils.replaceOnce(userNode.getPath(), userPath_ + "/", ""); //add drive with user relPath driveService_.addDrive(userRelPath + "|" + privatePath, workspace, user.getUserName(), homePath + "/" + privatePath, views, icon, viewPreferences, viewNonDocument, viewSideBar, showHiddenNode, allowCreateFolder, allowNodeTypesOnTree); //User and everyone can see public drive for user driveService_.addDrive(userRelPath + "|" + publicPath, workspace, permissions, homePath + "/" + publicPath, views, icon, viewPreferences, viewNonDocument, viewSideBar, showHiddenNode, allowCreateFolder, allowNodeTypesOnTree); } /** * */ public void preDelete(User user) throws Exception { SessionProvider sessionProvider = WCMCoreUtils.getSystemSessionProvider(); Node userNode = nodeHierarchyCreator_.getUserNode(sessionProvider, user.getUserName()); String userRelPath = StringUtils.replaceOnce(userNode.getPath(), userPath_ + "/", ""); //Remove private drive driveService_.removeDrive(userRelPath + "|" + nodeHierarchyCreator_.getJcrPath(PRIVATE_ALIAS)); //Remove public drive driveService_.removeDrive(userRelPath + "|" + nodeHierarchyCreator_.getJcrPath(PUBLIC_ALIAS)); } }