Disabilitare la creazione di nuovi siti da parte di utenti non amministrativi.

cancel
Showing results for 
Search instead for 
Did you mean: 
alexbromo
Active Member II

Disabilitare la creazione di nuovi siti da parte di utenti non amministrativi.

Dopo un po' di ricerche e di tentativi sono riuscito a disabilitare la funzionalità di creazione nuovi siti da parte degli utenti non amministrativi (che sinceramente non capisco come mai non sia disabilitata di default).

1) creare un nuovo file denominato "public-services-security-context.xml" formato come di seguito:


<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>

    <bean id="SiteService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
        <property name="authenticationManager"><ref bean="authenticationManager"/></property>
        <property name="accessDecisionManager"><ref bean="accessDecisionManager"/></property>
        <property name="afterInvocationManager"><ref bean="afterInvocationManager"/></property>
        <property name="objectDefinitionSource">
            <value>
                org.alfresco.service.cmr.site.SiteService.cleanSitePermissions=ACL_NODE.0.sys:base.ReadProperties
                org.alfresco.service.cmr.site.SiteService.createContainer=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties
                org.alfresco.service.cmr.site.SiteService.createSite=ACL_METHOD.ROLE_ADMINISTRATOR
                org.alfresco.service.cmr.site.SiteService.deleteSite=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.findSites=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties
                org.alfresco.service.cmr.site.SiteService.getContainer=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties
                org.alfresco.service.cmr.site.SiteService.listContainers=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties
                org.alfresco.service.cmr.site.SiteService.getMembersRole=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.getMembersRoleInfo=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.resolveSite=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.getSite=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties
                org.alfresco.service.cmr.site.SiteService.getSiteShortName=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties
                org.alfresco.service.cmr.site.SiteService.getSiteGroup=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.getSiteRoleGroup=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.getSiteRoles=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.getSiteRoot=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties
                org.alfresco.service.cmr.site.SiteService.hasContainer=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.hasCreateSitePermissions=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.hasSite=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.isMember=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.listMembers=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.listMembersInfo=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.listMembersPaged=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.listSites=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties
                org.alfresco.service.cmr.site.SiteService.listSitesPaged=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties
                org.alfresco.service.cmr.site.SiteService.removeMembership=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.canAddMember=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.setMembership=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.updateSite=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.countAuthoritiesWithRole=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.isSiteAdmin=ACL_ALLOW
                org.alfresco.service.cmr.site.SiteService.*=ACL_DENY
            </value>
        </property>
    </bean>

</beans>


2) salvare il file nella cartella: ""tomcat/shared/classes/alfresco/extension/"

3) riavviare Tomcat

La personalizzazione consiste sostanzialmente nella creazione del bean "SiteService_security", all'interno del quale la riga "org.alfresco.service.cmr.site.SiteService.createSite=ACL_METHOD.ROLE_ADMINISTRATOR" si occupa di restringere ai soli utenti amministrativi la possibilità di creare nuovi siti.

Fino alla versione 4.0 mi sembra di aver capito che il file "public-services-security-context.xml" fosse presente all'interno della cartella "webapps/alfresco/WEB-INF/classes/alfresco/" e si dovesse quindi solo provvedere a modificare la riga in questione con il giusto valore: dalla versione 5.0 in poi il file non è stato più inserito e va manualmente creato e salvato nella cartella sopraindicata al punto 2.

Nota: il bean non elimina dal front-end dell'utente non amministrativo la voce di menù per la creazione dei nuovi siti, ma ne impedisce di fatto la creazione con un messaggio che avvisa l'utente di non essere in possesso dei diritti necessari per completare l'operazione.

ALex.
1 Reply
openpj
Moderator
Moderator

Re: Disabilitare la creazione di nuovi siti da parte di utenti non amministrativi.

E' anche disponibile un plugin creato da Jeff Potts (ex dipendente di Alfresco) proprio per questo scopo che consente di definire il gruppo di utenti abilitati alla creazione dei siti:
https://addons.alfresco.com/addons/share-site-creators

Il plugin è compatibile con Alfresco 4.2 ma bisognerebbe capire se possa funzionare anche su Alfresco 5.