cancel
Showing results for 
Search instead for 
Did you mean: 

Ruolo Collaboratore con possibilità di spostare e non di eliminare

zio3d
Champ on-the-rise
Champ on-the-rise

Ciao a tutti.

Ho la seguente versione di Alfresco:

Alfresco Share v5.2.f (r137983-b22, Aikau 1.0.101.10, Spring Surf 5.2.f, Spring WebScripts 6.15, Freemarker 2.3.20-alfresco-patched, Rhino 1.7R4-alfresco-patched, Yui 2.9.0-alfresco-20141223)
Alfresco Community v5.2.0 (re21f2be5-b22) schema 10057

installato su Windows 10 64 bit.

Volevo fare in modo che nessuno potesse eliminare dei file, nemmeno i suoi (a parte gli amministratori ed i manager).

Per fare ciò ho modificato il file "\alfresco\model\permissionDefinitions.xml" (contenuto in "C:\alfresco-community\tomcat\webapps\alfresco\WEB-INF\lib\alfresco-repository-5.2.g.jar") aggiungendo la nuova sezione "FullWithoutDelete":      <permissionGroup name="FullWithoutDelete" allowFullControl="false" expose="false">
           <includePermissionGroup type="sys:base" permissionGroup="Read"/>
           <includePermissionGroup type="sys:base" permissionGroup="Write"/>
           <includePermissionGroup type="sys:base" permissionGroup="AddChildren"/>
           <includePermissionGroup type="sys:base" permissionGroup="Execute"/>
      </permissionGroup>

Ho poi sostituito:

   <globalPermission permission="FullControl" authority="ROLE_OWNER"/>

con:

   <globalPermission permission="FullWithoutDelete" authority="ROLE_OWNER"/>

in modo che chi crei un file non abbia i diritti sull'eliminazione.

E tutto funziona correttamente.

Adesso ho però l'esigenza di modificare il ruolo "Collaboratore" per permettere anche lo spostamento dei file, in modo che ognuno possa spostare solamente i file che ha creato e non quelli creati dagli altri (volendo, se di più facile risoluzione, potrebbe andarmi bene anche se riuscissero a spostare anche quelli creati dagli altri) mantenendo però disattivata la possibilità di eliminare i file.

Per fare ciò ho provato ad aggiungere la riga:

           <includePermissionGroup type="sys:base" permissionGroup="DeleteNode"/>

sia dentro la sezione <permissionGroup name="FullWithoutDelete" ...

e sia dentro la sezione <permissionGroup name="Collaborator" ...

ma con esito negativo, cioè non compare la voce "Sposta in..." con un utente "Collaboratore" del sito.

Cos'è che sbaglio, come potrei procedere?

Grazie.

1 ACCEPTED ANSWER

Ciao,

lo scenario di cui parli non è banale e per consigliarti al meglio dovrei avere più informazioni (e tempo) a disposizione...

Però posso darti un suggerimento: Alfresco ti permette di definire delle nuove action che puoi utilizzare in casi particolari come quelli che descrivi. L'action può essere mostrata come voce aggiuntiva nel menù di Share così da essere facilmente utilizzabile dall'utente.

Ad esempio nel tuo caso potresti togliere all'utente il permesso di modificare e cancellare i documenti e poi ridefinire una nuova action che faccia lo spostamento di un documento.

Questo sarebbe possibile perche nel suo codice (java o ecmascript) puoi "impersonare" un utente con permessi superiori a quello che ha invocato l'azione (anche Admin se serve) e quindi puoi compiere operazioni che a quest'ultimo sarebbero precluse.

Mi permetto inoltre darti alcuni consigli (basati sull'esperienza):

1) Evita di personalizzare gli strumenti di default di Alfresco. Questo ti espone a molti problemi, ora e in futuro. Preferisci sempre l'estendensione o la ridefinizione.

2) Il principio KISS (Keep It Simple, Stupid!) vale anche anche per Alfresco. Cerca di non complicare i processi riguardanti i documenti se non è strettamente necessario. In genere se una cosa ti sembra troppo complicata... lo è davvero. Dovresti cercare altre strade.

View answer in original post

4 REPLIES 4

davidciamberlan
Elite Collaborator
Elite Collaborator

Ciao,

non mi è molto chiaro cosa vuoi ottenere... ma penso che per spostare un file tu debba avere anche i permessi per eliminarlo (dopotutto lo spostamento è una copia+eliminazione).

Inoltre perchè hai usato "DeleteNode" e non "Delete"?

Ciao,

grazie della risposta.

Avevo letto il post (https://community.alfresco.com/thread/154906-custom-permission-problem-for-movingdeleting) e avevo compreso che "Delete" eliminava definitivamente l'elemento e "DeleteNode" ne permetteva solamente lo spostamento. Probabilmente ho capito male non conoscendo bene l'inglese.

Il mio obiettivo finale è quello di far restare traccia di ogni documento creato da ogni utente, per questo ho disabilitato l'eliminazione. (Questo perché prima dell'eliminazione potrebbe essere stato nel frattempo usato da varie persone e deve restarne traccia).

C'è il reparto A che ha dei testi molto riservati che non vanno condivisi/distribuiti al reparto B, ma volevo mantenere la possibilità di far collaborare i due reparti per quanto riguarda lo scambio e modifica collaborativa di informazioni non riservate. Per fare ciò, devo fare in modo che resti traccia di tutto il materiale creato/distribuito internamente così da riconoscere una violazione di sicurezza dei dati (facendo in futuro opportune verifiche tra lo storico movimenti).

Volevo poter attivare lo spostamento dei documenti in modo che possano eventualmente spostarli tra le varie cartelle.

La differenza tra lo spostamento e l'eliminazione è che la prima lo fa rimanere da qualche parte in Alfresco mentre la seconda lo farebbe mettere nel proprio cestino che potrebbe venire svuotato.

A tal proposito, potrebbe andarmi bene anche riattivare sia gli spostamenti che le eliminazioni ma bloccare la possibilità di svuotare od eliminare i vari elementi dal cestino di ogni utente. In questo modo riuscirei a mantenere il mio obiettivo finale: non permettere la rimozione da Alfresco di nessun materiale in quanto resterebbe per sempre al massimo nel cestino di ogni utente.

Inoltre, per essere sicuro di tenere traccia di tutte le informazioni, ho attivato in modo predefinito anche il versioning di tutti i file (aggiungendo l'aspect "cm:versionable" nella sezione "cm:content" del file "ContentModel.xml"), in questo modo se un utente modifica più volte lo stesso file mi resterebbero consultabili tutte le varie modifiche.

Senza l'attivazione del versioning obbligatorio, un utente A potrebbe scrivere un documento con del testo riservato, l'utente B potrebbe leggerlo e ottenere questo testo riservato, successivamente l'utente A potrebbe modificare nuovamente il documento rimuovendo da questo la parte del testo riservato in modo che non resti traccia di averlo distribuito.

A breve dovrei anche cercare di disattivare tutti i comandi di condivisione in quanto se rimanessero attivi non si potrebbe capire chi ha avuto accesso a varie informazioni (riservate e non) attraverso tali comandi. Resterebbe traccia dei documenti ma non di chi ne ha avuto accesso e l'abbiano letti.

Avevo pensato anchi'io che per poter spostare un documento bisogna poter permettere l'eliminazione, ma speravo che ci fosse qualche proprietà/sistema che permettesse comunque solamente lo spostamento e non l'eliminazione. Se non c'è, passerei anche a sistemi alternativi come sopra accennato (tipo bloccare l'eliminazione dal cestino) per arrivare allo stesso obiettivo.

Spero di essere stato chiaro.

Grazie.

Ciao,

Davide.

Ciao,

lo scenario di cui parli non è banale e per consigliarti al meglio dovrei avere più informazioni (e tempo) a disposizione...

Però posso darti un suggerimento: Alfresco ti permette di definire delle nuove action che puoi utilizzare in casi particolari come quelli che descrivi. L'action può essere mostrata come voce aggiuntiva nel menù di Share così da essere facilmente utilizzabile dall'utente.

Ad esempio nel tuo caso potresti togliere all'utente il permesso di modificare e cancellare i documenti e poi ridefinire una nuova action che faccia lo spostamento di un documento.

Questo sarebbe possibile perche nel suo codice (java o ecmascript) puoi "impersonare" un utente con permessi superiori a quello che ha invocato l'azione (anche Admin se serve) e quindi puoi compiere operazioni che a quest'ultimo sarebbero precluse.

Mi permetto inoltre darti alcuni consigli (basati sull'esperienza):

1) Evita di personalizzare gli strumenti di default di Alfresco. Questo ti espone a molti problemi, ora e in futuro. Preferisci sempre l'estendensione o la ridefinizione.

2) Il principio KISS (Keep It Simple, Stupid!) vale anche anche per Alfresco. Cerca di non complicare i processi riguardanti i documenti se non è strettamente necessario. In genere se una cosa ti sembra troppo complicata... lo è davvero. Dovresti cercare altre strade.

Ciao.

Grazie della risposta e del tempo che mi hai dedicato,

seguirò sicuramente sia il tuo suggerimento (trovo che effettivamente sia il più corretto da seguire) che i tuoi consigli.

Grazie.

Ciao,

Davide.

Getting started

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.