03-06-2009 10:34 AM
<permissionSet type="st:site" expose="selected">
<permissionGroup name="SiteManager" allowFullControl="true" expose="true" />
<permissionGroup name="SiteCollaborator" allowFullControl="false" expose="true">
<includePermissionGroup permissionGroup="Collaborator" type="cm:cmobject" />
</permissionGroup>
<permissionGroup name="SiteContributor" allowFullControl="false" expose="true">
<includePermissionGroup permissionGroup="Contributor" type="cm:cmobject" />
</permissionGroup>
<permissionGroup name="SiteConsumer" allowFullControl="false" expose="true">
<includePermissionGroup permissionGroup="Consumer" type="cm:cmobject" />
<includePermissionGroup permissionGroup="ForumContributor" type="fm:forum" />
</permissionGroup>
</permissionSet>
<permissionSet type="fm:forum" expose="selected">
<permissionGroup name="ForumContributor" allowFullControl="false" expose="true">
<includePermissionGroup permissionGroup="Contributor" type="cm:cmobject" />
</permissionGroup>
</permissionSet>
03-06-2009 12:22 PM
03-06-2009 04:03 PM
You know that if you create the site as public, anyone can just start a discussion and access the site functionality without joining the site first.
03-17-2009 03:32 PM
03-27-2009 12:14 PM
04-24-2009 11:05 AM
<permissionGroup name="Perm" allowFullControl="false" expose="false">
<includePermissionGroup permissionGroup="Read" type="sys:base" />
</permissionGroup>
<permissionGroup name="Perm_ext" allowFullControl="false" expose="false">
<includePermissionGroup permissionGroup="Write" type="sys:base" />
</permissionGroup>
<globalPermission permission="Perm_ext" authority="ROLE_EXT" />
package org.alfresco.module.mymodule;
import * /* you have to do it yourself */
public class GenericTypeBasedDynamicAuthority implements DynamicAuthority {
private NodeService nodeService;
private PermissionsDaoComponent permissionsDaoComponent;
private AuthorityService authorityService;
// Deduced values
private PermissionReference basePermission;
private List<QName> applicableTypes = new ArrayList<QName>();
private String authority;
@Override
public String getAuthority() {
return authority;
}
@Override
public boolean hasAuthority(NodeRef nodeRef, String userName) {
AccessStatus state = hasBasePermission(nodeRef, userName);
return (applicableTypes.contains(nodeService.getType(nodeRef)) && (state == AccessStatus.ALLOWED));
}
@Override
public Set<PermissionReference> requiredFor() {
return null;
}
public void setNodeService(NodeService nodeService) {
this.nodeService = nodeService;
}
public NodeService getNodeService() {
return nodeService;
}
public void setPermissionsDaoComponent(PermissionsDaoComponent permissionsDaoComponent) {
this.permissionsDaoComponent = permissionsDaoComponent;
}
public PermissionsDaoComponent getPermissionsDaoComponent() {
return permissionsDaoComponent;
}
public void setAuthorityService(AuthorityService authorityService) {
this.authorityService = authorityService;
}
public AuthorityService getAuthorityService() {
return authorityService;
}
public void setAuthority(String authority) {
this.authority = authority;
}
public void setTypes(List<String> types) {
this.applicableTypes.clear();
for (String type : types) {
this.applicableTypes.add(QName.createQName(MyModel.NAMESPACE, type));
}
}
public List<String> getTypes() {
List<String> result = new ArrayList<String>();
for (QName qname : applicableTypes) {
result.add(qname.getLocalName());
}
return result;
}
public void setBaseRole(String role) {
this.basePermission = SimplePermissionReference.getPermissionReference(ContentModel.TYPE_CMOBJECT, role);
}
public String getBaseRole() {
return basePermission.getName();
}
private AccessStatus hasBasePermission(NodeRef nodeRef, String userName) {
NodePermissionEntry nodePermissions = permissionsDaoComponent.getPermissions(nodeRef);
List<? extends PermissionEntry> permEntries = nodePermissions.getPermissionEntries();
Set<String> auths = getAuthorityService().getAuthorities();
auths.add(userName);
for (PermissionEntry permEntry : permEntries) {
if (permEntry.getPermissionReference().equals(basePermission) &&
auths.contains(permEntry.getAuthority()) &&
permEntry.getAccessStatus() == AccessStatus.ALLOWED) {
return AccessStatus.ALLOWED;
}
}
return AccessStatus.DENIED;
}
}
<bean id="permissionServiceImpl" class="org.alfresco.repo.security.permissions.impl.PermissionServiceImpl">
<property name="nodeService">
<ref bean="mtAwareNodeService" />
</property>
<property name="tenantService">
<ref bean="tenantService"/>
</property>
<property name="dictionaryService">
<ref bean="dictionaryService" />
</property>
<property name="permissionsDaoComponent">
<ref bean="permissionsDaoComponent" />
</property>
<property name="modelDAO">
<ref bean="permissionsModelDAO" />
</property>
<property name="authorityService">
<ref bean="authorityService" />
</property>
<property name="accessCache">
<ref bean="permissionsAccessCache" />
</property>
<property name="policyComponent">
<ref bean="policyComponent" />
</property>
<property name="aclDaoComponent">
<ref bean="aclDaoComponent" />
</property>
<property name="dynamicAuthorities">
<list>
<ref bean="ownerDynamicAuthority" />
<ref bean="lockOwnerDynamicAuthority" />
<!– dynamic authorities for roles on types –>
<ref bean="myDynamicAuthority" />
</list>
</property>
</bean>
<bean id="myDynamicAuthority" class="org.alfresco.module.mymodule.GenericTypeBasedDynamicAuthority">
<property name="nodeService">
<ref bean="nodeService"/>
</property>
<property name="permissionsDaoComponent">
<ref bean="permissionsDaoComponent" />
</property>
<property name="authorityService">
<ref bean="authorityService" />
</property>
<property name="authority">
<value>ROLE_EXT</value>
</property>
<property name="baseRole">
<value>Perm</value>
</property>
<property name="types">
<list>
<value>yourType</value>
</list>
</property>
</bean>
Above "yourType" is the type you want to extend your permissions on.05-13-2009 04:40 AM
<permissionGroup name="SolaScrittura" allowFullControl="false" expose="true" >
<includePermissionGroup permissionGroup="Read" type="sys:base" />
<includePermissionGroup permissionGroup="CreateChildren" type="sys:base" />
</permissionGroup>
under the <!– ================================================ –>
<!– Permissions available to all content and folders –>
<!– ================================================ –>
<!– =============================== –>
<!– Permissions specific to content –>
<!– =============================== –>
<permissionSet type="cm:content" expose="selected">
<!– Content specific roles. –>
<permissionGroup name="Coordinator" extends="true" expose="true"/>
<permissionGroup name="Collaborator" extends="true" expose="true"/>
<permissionGroup name="Contributor" extends="true" expose="true"/>
<permissionGroup name="Editor" extends="true" expose="true"/>
<permissionGroup name="Consumer" extends="true" expose="true"/>
<permissionGroup name="RecordAdministrator" extends="true" expose="false"/>
<permissionGroup name="SolaScrittura" extends="true" expose="true"/>
</permissionSet>
<permissionSet type="cm:folder" expose="selected">
<!– Content folder specific roles. –>
<permissionGroup name="Coordinator" extends="true" expose="true"/>
<permissionGroup name="Collaborator" extends="true" expose="true"/>
<permissionGroup name="Contributor" extends="true" expose="true"/>
<permissionGroup name="Editor" extends="true" expose="true"/>
<permissionGroup name="Consumer" extends="true" expose="true"/>
<permissionGroup name="RecordAdministrator" extends="true" expose="false"/>
<permissionGroup name="SolaScrittura" extends="true" expose="true"/>
</permissionSet>
08-09-2012 03:24 PM
08-10-2012 03:37 AM
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.