/** * Koya is an alfresco module that provides a corporate orientated dataroom. * * Copyright (C) Itl Developpement 2014 * * 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see `<http://www.gnu.org/licenses/>`. */ package fr.itldev.koya.action; import java.util.List; import org.alfresco.model.ContentModel; import org.alfresco.repo.action.ParameterDefinitionImpl; import org.alfresco.repo.action.executer.ActionExecuterAbstractBase; import org.alfresco.repo.site.SiteModel; import org.alfresco.service.cmr.action.Action; import org.alfresco.service.cmr.action.ParameterDefinition; import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.apache.log4j.Logger; import fr.itldev.koya.alfservice.CompanyService; import fr.itldev.koya.alfservice.UserService; import fr.itldev.koya.alfservice.security.SpaceAclService; import fr.itldev.koya.model.impl.Company; import fr.itldev.koya.model.impl.Space; import fr.itldev.koya.model.impl.User; /** * This action cleans removes all user's groups member ship if groups belong to * defined company * * */ public class CleanUserPermissionsActionExecuter extends ActionExecuterAbstractBase { private Logger logger = Logger.getLogger(this.getClass()); public static final String NAME = "cleanPermissions"; public static final String PARAM_USERNAME = "userName"; private SpaceAclService spaceAclService; private NodeService nodeService; private CompanyService companyService; private UserService userService; public void setNodeService(NodeService nodeService) { this.nodeService = nodeService; } public void setSpaceAclService(SpaceAclService spaceAclService) { this.spaceAclService = spaceAclService; } public void setCompanyService(CompanyService companyService) { this.companyService = companyService; } public void setUserService(UserService userService) { this.userService = userService; } @Override protected void executeImpl(Action ruleAction, NodeRef actionedUponNodeRef) { if (!nodeService.getType(actionedUponNodeRef).equals( SiteModel.TYPE_SITE)) { // if node is not a site then abort action return; } String siteName = (String) nodeService.getProperty(actionedUponNodeRef, ContentModel.PROP_NAME); Company c = companyService.getCompany(siteName); User u = userService.getUserByUsername((String) ruleAction .getParameterValue(PARAM_USERNAME)); // removes any koya autority membership for user on spaces groups he // belongs to List<Space> spaceToRemovePermissions = spaceAclService .getKoyaUserSpaces(u, c); for (Space s : spaceToRemovePermissions) { spaceAclService.removeAnyKoyaAuthority(s, u); } } @Override protected void addParameterDefinitions(List<ParameterDefinition> paramList) { paramList.add(new ParameterDefinitionImpl(PARAM_USERNAME, DataTypeDefinition.NODE_REF, true, getParamDisplayLabel(PARAM_USERNAME))); } }