bloggers bloggers

Marco Napolitano
Messaggi: 79
Stelle: 0
Data: 17/02/22
Jader Jed Francia
Messaggi: 63
Stelle: 0
Data: 18/02/21
Paolo Gambetti
Messaggi: 2
Stelle: 0
Data: 11/11/19
Katia Pazzi
Messaggi: 1
Stelle: 0
Data: 27/06/19
Ezio Lombardi
Messaggi: 11
Stelle: 0
Data: 10/04/18
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
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.