mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud)
69765: Merged V4.2-BUG-FIX (4.2.3) to HEAD-BUG-FIX (4.3/Cloud) 69685: Merged V4.1-BUG-FIX (4.1.9) to V4.2-BUG-FIX (4.2.3) 68638: Merged DEV to V4.1-BUG-FIX (4.1.9) 68070 : MNT-11289 : Sites deleted in 2013 cannot be restored in 2014 - Recreate groups when a site is restored on condition that the groups are missing. Make current user site manager if there is no site managers. Fix related test git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@70448 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -50,6 +50,8 @@ import org.alfresco.repo.admin.SysAdminParams;
|
||||
import org.alfresco.repo.cache.SimpleCache;
|
||||
import org.alfresco.repo.node.NodeArchiveServicePolicies;
|
||||
import org.alfresco.repo.node.NodeArchiveServicePolicies.BeforePurgeNodePolicy;
|
||||
import org.alfresco.repo.node.NodeServicePolicies;
|
||||
import org.alfresco.repo.node.NodeServicePolicies.OnRestoreNodePolicy;
|
||||
import org.alfresco.repo.node.getchildren.FilterProp;
|
||||
import org.alfresco.repo.node.getchildren.FilterPropString;
|
||||
import org.alfresco.repo.node.getchildren.FilterPropString.FilterTypeString;
|
||||
@@ -118,7 +120,7 @@ import org.springframework.extensions.surf.util.ParameterCheck;
|
||||
*
|
||||
* @author Roy Wetherall
|
||||
*/
|
||||
public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServiceInternal, SiteModel, NodeArchiveServicePolicies.BeforePurgeNodePolicy
|
||||
public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServiceInternal, SiteModel, NodeArchiveServicePolicies.BeforePurgeNodePolicy, NodeServicePolicies.OnRestoreNodePolicy
|
||||
{
|
||||
/** Logger */
|
||||
protected static Log logger = LogFactory.getLog(SiteServiceImpl.class);
|
||||
@@ -402,6 +404,10 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic
|
||||
BeforePurgeNodePolicy.QNAME,
|
||||
SiteModel.TYPE_SITE,
|
||||
new JavaBehaviour(this, "beforePurgeNode"));
|
||||
this.policyComponent.bindClassBehaviour(
|
||||
OnRestoreNodePolicy.QNAME,
|
||||
SiteModel.TYPE_SITE,
|
||||
new JavaBehaviour(this, "onRestoreNode"));
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
@@ -563,6 +569,12 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic
|
||||
*/
|
||||
private void setupSitePermissions(
|
||||
final NodeRef siteNodeRef, final String shortName, final SiteVisibility visibility, final Map<String, Set<String>> memberships)
|
||||
{
|
||||
setupSitePermissions(siteNodeRef, shortName, visibility, memberships, false);
|
||||
}
|
||||
|
||||
private void setupSitePermissions(
|
||||
final NodeRef siteNodeRef, final String shortName, final SiteVisibility visibility, final Map<String, Set<String>> memberships, final boolean ignoreExistingGroups)
|
||||
{
|
||||
// Get the current user
|
||||
final String currentUser = authenticationContext.getCurrentUserName();
|
||||
@@ -593,14 +605,26 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic
|
||||
|
||||
// Create the site's groups
|
||||
String siteGroupShortName = getSiteGroup(shortName, false);
|
||||
String siteGroup = authorityService.createAuthority(AuthorityType.GROUP, siteGroupShortName,
|
||||
/* MNT-11289 fix - group is probably already exists. we should check it for existence */
|
||||
String siteGroup = authorityService.getName(AuthorityType.GROUP, siteGroupShortName);
|
||||
if (!ignoreExistingGroups || !authorityService.authorityExists(siteGroup))
|
||||
{
|
||||
siteGroup = authorityService.createAuthority(AuthorityType.GROUP, siteGroupShortName,
|
||||
siteGroupShortName, shareZones);
|
||||
}
|
||||
QName siteType = directNodeService.getType(siteNodeRef);
|
||||
Set<String> permissions = permissionService.getSettablePermissions(siteType);
|
||||
for (String permission : permissions)
|
||||
{
|
||||
// Create a group for the permission
|
||||
String permissionGroupShortName = getSiteRoleGroup(shortName, permission, false);
|
||||
/* MNT-11289 fix - group is probably already exists. we should check it for existence */
|
||||
String authorityName = authorityService.getName(AuthorityType.GROUP, permissionGroupShortName);
|
||||
if (ignoreExistingGroups && authorityService.authorityExists(authorityName))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
String permissionGroup = authorityService.createAuthority(AuthorityType.GROUP,
|
||||
permissionGroupShortName, permissionGroupShortName, shareZones);
|
||||
authorityService.addAuthority(siteGroup, permissionGroup);
|
||||
@@ -646,9 +670,12 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic
|
||||
permissionService.setPermission(siteNodeRef,
|
||||
PermissionService.ALL_AUTHORITIES,
|
||||
PermissionService.READ_PERMISSIONS, true);
|
||||
if (memberships == null)
|
||||
|
||||
// add the default site manager authority
|
||||
Set<String> currentManagers =
|
||||
authorityService.getContainedAuthorities(AuthorityType.USER, getSiteRoleGroup(shortName, SiteModel.SITE_MANAGER, true), false);
|
||||
if (currentManagers.isEmpty())
|
||||
{
|
||||
// add the default site manager authority
|
||||
authorityService.addAuthority(getSiteRoleGroup(shortName,
|
||||
SiteModel.SITE_MANAGER, true), currentUser);
|
||||
}
|
||||
@@ -1820,6 +1847,22 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic
|
||||
return getPagingResults(pagingRequest, results);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.alfresco.repo.node.NodeServicePolicies.OnRestoreNodePolicy#onRestoreNode(org.alfresco.service.cmr.repository.ChildAssociationRef)
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void onRestoreNode(ChildAssociationRef childAssocRef)
|
||||
{
|
||||
// regenerate the groups for the site when it is restored from the Archive store
|
||||
NodeRef siteRef = childAssocRef.getChildRef();
|
||||
setupSitePermissions(
|
||||
siteRef,
|
||||
(String)directNodeService.getProperty(siteRef, ContentModel.PROP_NAME),
|
||||
getSiteVisibility(siteRef),
|
||||
(Map<String, Set<String>>)directNodeService.getProperty(siteRef, QName.createQName(null, "memberships")), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.alfresco.service.cmr.site.SiteService#listMembers(java.lang.String, java.lang.String, java.lang.String, int)
|
||||
*/
|
||||
|
Reference in New Issue
Block a user