/*
*
* Copyright 2005 AgileTec s.r.l. (http://www.agiletec.it) All rights reserved.
*
* This file is part of jAPS software.
* jAPS is a free software;
* you can redistribute it and/or modify it
* under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2.
*
* See the file License for the specific language governing permissions
* and limitations under the License
*
*
*
* Copyright 2005 AgileTec s.r.l. (http://www.agiletec.it) All rights reserved.
*
*/
package com.agiletec.aps.system.services.authorization;
import java.util.List;
import com.agiletec.aps.system.common.entity.model.IApsEntity;
import com.agiletec.aps.system.services.group.Group;
import com.agiletec.aps.system.services.page.IPage;
import com.agiletec.aps.system.services.role.Permission;
import com.agiletec.aps.system.services.user.UserDetails;
/**
* Interfaccia base per il servizio di autorizzazione.
* Il servizio verifica le autorizzazioni di
* utenti ad azioni (attraverso il permesso associato) o ad oggetti del sistema
* (attraverso il gruppo associato).
* @author E.Santoboni
*/
public interface IAuthorizationManager {
/**
* Verifica se l'utente specificato possiede l'autorizzazione richiesta.
* @param user L'utente di cui verificare l'autorizzazione.
* @param auth L'autorizzazione da verificare.
* @return True se l'utente possiede l'autorizzazione, false in caso contrario.
*/
public boolean isAuth(UserDetails user, IApsAuthority auth);
/**
* Verifica se l'utente specificato possiede il permesso richiesto.
* @param user L'utente di cui verificare l'autorizzazione.
* @param permission Il permesso da verificare.
* @return True se l'utente possiede il permesso, false in caso contrario.
*/
public boolean isAuth(UserDetails user, Permission permission);
/**
* Verifica se l'utente specificato appartiene al gruppo specificato.
* @param user L'utente di cui verificare l'autorizzazione.
* @param group Il gruppo da verificare.
* @return True se l'utente fa parte del gruppo, false in caso contrario.
*/
public boolean isAuth(UserDetails user, Group group);
/**
* Verifica se l'utente specificato è abilitato all'accesso alla pagina specificata.
* @param user L'utente di cui verificare l'autorizzazione.
* @param page La pagina da analizzare.
* @return True se l'utente è abilitato all'accesso alla pagina specificata, false in caso contrario.
*/
public boolean isAuth(UserDetails user, IPage page);
/**
* Verifica se l'utente specificato appartiene al gruppo specificato.
* @param user L'utente di cui verificare l'autorizzazione.
* @param groupName Il nome del gruppo da verificare.
* @return True se l'utente fa parte del gruppo, false in caso contrario.
*/
public boolean isAuthOnGroup(UserDetails user, String groupName);
/**
* Verifica se l'utente specificato appartiene al ruolo specificato.
* @param user L'utente di cui verificare l'autorizzazione.
* @param roleName Il nome del ruolo da verificare.
* @return True se l'utente possiede il ruolo specificato, false in caso contrario.
*/
public boolean isAuthOnRole(UserDetails user, String roleName);
/**
* Verifica se l'utente specificato possiede il permesso richiesto.
* @param user L'utente di cui verificare l'autorizzazione.
* @param permissionName Il nome del permesso da verificare.
* @return True se l'utente possiede il permesso, false in caso contrario.
*/
public boolean isAuthOnPermission(UserDetails user, String permissionName);
/**
* Verifica se l'utente specificato possiede l'autorizzazione all'accesso all'entità specificata.
* @param user L'utente di cui verificare l'autorizzazione.
* @param entity L'entità di cui verificare l'accesso.
* @return True se l'utente possiede il permesso di accesso all'entità, false in caso contrario.
*/
public boolean isAuth(UserDetails user, IApsEntity entity);
/**
* Restituisce la lista di gruppi jAPS di cui l'utente specificato fa parte.
* @param user L'utente del quale verificare l'appartenenza a gruppi.
* @return La lista di gruppi di cui l'utente corrente fa parte.
*/
public List<Group> getGroupsOfUser(UserDetails user);
}