bloggers bloggers

Marco Napolitano
Messaggi: 68
Stelle: 0
Data: 15/11/17
Jader Jed Francia
Messaggi: 50
Stelle: 0
Data: 22/09/17
Ezio Lombardi
Messaggi: 9
Stelle: 0
Data: 23/06/17
Chiara Mambretti
Messaggi: 25
Stelle: 0
Data: 27/02/17
Serena Traversi
Messaggi: 3
Stelle: 0
Data: 21/07/16
Francesco Falanga
Messaggi: 8
Stelle: 0
Data: 14/06/16
Antonio Musarra
Messaggi: 2
Stelle: 0
Data: 18/11/13
Simone Celli Marchi
Messaggi: 6
Stelle: 0
Data: 09/07/13
marcello marangio
Messaggi: 4
Stelle: 0
Data: 05/07/13
Marco Mancini
Messaggi: 1
Stelle: 0
Data: 05/06/13
Indietro

Liferay e gestione programmatica dei permessi

La gestione standard di ruoli e permessi si effettua direttamente dal pannello di controllo di Liferay; potrebbe però succedere di dover mettere mano a tali permessi in maniera programmatica, ossia all'interno del codice delle proprie portlet.

Vediamo quindi come fare...

Gestione dei ruoli

Come prima cosa vediamo come creare un ruolo.

Role role = RoleLocalServiceUtil.fetchRole(themeDisplay.getCompanyId(), "MioRuolo");
if (role == null) {
role = RoleLocalServiceUtil.addRole(
themeDisplay.getUserId(), themeDisplay.getCompanyId(),
"MioRuolo", null, null, 1);
role.setTitle("Titolo del ruolo");
role.setDescription("Descrizione del ruolo");
role = RoleLocalServiceUtil.updateRole(role);

}

Gestione dei permessi

Una volta ottenuta l'istanza del ruolo è possibile assegnare i permessi di default.

Permessi a livello di portlet

Vediamo come assegnare i permessi a livello di singola portlet.

Ricordiamo che i permessi associati ad una portlet sono identificati da stringhe, come ad esempio ADD_CUSTOMER, EDIT_CUSTOMER, DELETE_CUSTOMER; supponiamo quindi di voler assegnare questi 3 permessi (a livello di portlet) al ruolo che abbiamo creato sopra.

// definizione dei permessi da associare
// alla portlet custom "miaportlet_WAR_progettoportlet"

String[] actiondIds = {"ADD_CUSTOMER", "EDIT_CUSTOMER", "DELETE_CUSTOMER"};

for (String actionId : actionIds) {
ResourcePermissionServiceUtil.addResourcePermission(
themeDisplay.getGroupId(),
themeDisplay.getCompanyId(),
"
miaportlet_WAR_progettoportlet",
ResourceConstants.SCOPE_GROUP,
"" +
themeDisplay.getGroupId(),
role.getRoleId(),
actionId);
}

Quanto citato sopra è valido per le portlet applicative di frontend; nel caso in cui sia necessario creare permessi per le portlet del pannello di controllo occorre aggiungere anche il permesso ActionKeys.ACCESS_IN_CONTROL_PANEL altrimenti la portlet non sarà visibile.

Permessi a livello di model

Vediamo come assegnare i permessi a livello di singolo model.

Supponiamo ora di dover gestire i permessi generici ActionKeys.UPDATE e ActionKeys.DELETE.

// definizione dei permessi da associare
// al model it.dvel.liferay.model.Customer

String[] actiondIds = {ActionKeys.UPDATE, ActionKeys.DELETE};

for (String actionId : actionIds) {
ResourcePermissionServiceUtil.addResourcePermission(
themeDisplay.getGroupId(),
themeDisplay.getCompanyId(),
"
it.dvel.liferay.model.Customer",
ResourceConstants.SCOPE_GROUP,
"" +
themeDisplay.getGroupId(),
role.getRoleId(),
actionId);
}

Enjoy!

Precedente
Commenti
Nessun commento. Vuoi essere il primo.