2012-01-23 15 views
5

Ho l'attività successiva: proibire a tutti gli utenti (tranne l'amministratore) di eliminare un contenuto in Alfresco. Sono utilizzare un servizio il permesso per questo, ma non funziona:Alfresco Proibire a tutti gli utenti di eliminare un contenuto

private void setReadOnly(ScriptNode node) { 
     permissionService.deletePermissions(node.getNodeRef()); 
     permissionService.setPermission(node.getNodeRef(), 
PermissionService.ALL_AUTHORITIES, PermissionService.CONSUMER, true); 
} 

Ma se io sono aggiungere il mio utente se un altro gruppo (per esempio - Template Designer) e poi aggiungo nuova autorizzazione per il blocco dei contenuti da Alfresco Share (ad esempio gruppo- "TEMPLATE_DESIGNER" "coordinatore" di ruolo) - dopo che il mio utente deve eliminare il contenuto, aggiungere nuovi contenuti (se cartella) e altri ... Un altro modo per risolvere il mio problema -

private void setReadOnly(ScriptNode node) { 
     permissionService.deletePermissions(node.getNodeRef()); 
     permissionService.setInheritParentPermissions(node.getNodeRef(), false); 
} 

ma non è adatto per qualche motivo. Per favore, rispondi: come proibire di cancellare un contenuto per tutti gli utenti (eccetto l'amministratore)? Grazie.

+0

Avete bisogno di inibire la cancellazione per * tutti * gli utenti, o semplicemente selezionato utenti/gruppi? La tua domanda è in conflitto con la parte TEMPLATE_DESIGNER della tua descrizione. – skuro

risposta

2

Non è possibile modificare lo permissionDefinitions.xml e rimuovere l'autorizzazione di eliminazione per ogni ruolo?

C'è un ruolo separato per admin, basta lasciarlo così com'è.

AGGIORNAMENTO: Se si desidera eseguire solo una cartella, è possibile impostare manualmente le autorizzazioni. Deseleziona l'autorizzazione eredita e imposta i diritti dei gruppi a & utente. Solo il coordinatore ha i diritti di eliminazione, vedere la pagina Docs

Nel caso in cui si desideri rimuovere il permesso del proprietario, che ha ancora i diritti di eliminazione. basta creare un Javascript che rimuove il proprietario.

+0

No, perché ho bisogno di farlo solo per determinati contenuti (solo una cartella). – VladislavLysov

+0

Ho aggiornato le risposte, il commento è diventato troppo lungo –

+0

Ho bisogno di farlo a livello di programmazione. Come ho scritto nel primo post - se rimuovo il proprietario o rimuovo il permesso ereditario - la ricerca lucene non funziona da javascript, e ho bisogno di ballare intorno al chear (esegui il codice javascript dal codice java come amministratore - funziona, ma non va bene). Ho bisogno di un altro modo per risolvere questo problema. – VladislavLysov

2

OK seconda risposta:

Creare un comportamento che implementa NodeServicePolicies.BeforeDeleteNodePolicy.

Questo comportamento verrà attivato ogni volta prima che un utente tenti di eliminare un elemento. Quindi allora avrai un NodeRef, da lì puoi controllare quale nodo è e se vuoi renderlo cancellabile o meno.

Il modo migliore per farlo è quello di:

  • annuncio un aspetto personalizzato e valutare con il comportamento
  • o definire un tipo di nodo personalizzato, che ha un valore booleano metadati personalizzati o qualcosa che è impostato da una javascript o da una regola che attiva il javascript. E fare quel campo nascosto, in modo che nessun utente può selezionare/deselezionare lo

controllare Btw questo PDF da Jeff Vasi sui comportamenti che creano :)

+0

Sì, sto usando il comportamento, ma in questo modo non va bene anche per me. Mi piacerebbe usare le autorizzazioni per questo. Ora aggiungo il mio aspetto del modello personalizzato "systemLocked" e aggiungo permissionDefinitions.xml – VladislavLysov

+0

?? perché vuoi usare i permessi per questo? Voglio dire che non sei completamente chiaro con le cose che stai chiedendo. Guarda la tua domanda è vaga come ... Scrivi correttamente quello che vuoi, ci sono più modi per Roma di uno, giusto. –

+0

Ho risolto questo problema. Uso il bootstrap per questo. Grazie per le risposte. – VladislavLysov

Problemi correlati