Ir al contenido principal

Obtener nivel de acceso (permisos) sobre un archivo en RIDC con Java

Parte de las tareas comunes que enfrentamos cuando trabajamos con el Oracle UCM por medio de la api RIDC, es la de validar los permisos de acceso de un usuario sobre un archivo cualquiera dado su Id de documento.

Para ello nos valemos de una implementación de la interface IUserSecurityCache, y usamos el método getAccessLevelForDocument(...).
Dejo a continuación un fragmento de código de ejemplo:
 
public class RIDCBusiness { 
  public static int getAccesLevelForDocumentByIdAndUser( 
  String idConnectionURL, String usernameForConnect, 
  String userNameToCheck, String documentId) { 
  int levelAccess = -1; 
  try { 
    final IdcClient mclient = getUCMConnection(idConnectionURL, 
    usernameForConnect); 
 
 // RIDC superuser context 
 // use las credenciales adecuadas a su plataforma 
    final IdcContext msuperuser = new IdcContext("weblogic", "weblogic"); 
    final IUserSecurityCache mSGAcctAclCache = new UserSGAcctAclCache(mclient, 20, 1000, 20000, msuperuser); 
    final DataBinder docBinder = getDocInfoByDocId(idConnectionURL, 
    usernameForConnect, documentId); 
    if (docBinder == null) 
      return levelAccess; 
    final DataObject docInfo = docBinder.getResultSet("DOC_INFO").getRows().get(0); 
    final IdcContext context = new IdcContext(userNameToCheck); 
    final CacheId userToCheck = new CacheId(context.getUser(), context); 
    final ITrace trace = null; 
 
    levelAccess = mSGAcctAclCache.getAccessLevelForDocument( 
    userToCheck, docInfo, trace); 
  } catch (final Exception e) { 
    Logger.getLogger("RIDCBusiness").error("Error en getAccesLevelForDocumentByIdAndUser", e); 
  } 
 
  return levelAccess; 
 } 
 
 public static IdcClient getUCMConnection(String idConnectionURL, String username) throws IdcClientException, IOException { 
   final IdcClientManager clientManager = new IdcClientManager(); 
   final IdcClient client = clientManager.createClient(idConnectionURL); 
   return client; 
 } 
 } 
 
 public static DataBinder getDocInfoByDocId(String idConnectionURL, String username, String documentId) { 
   ServiceResponse serviceResponse = null; 
 
   try { 
     final IdcClient client = getUCMConnection(idConnectionURL, username); 
     final DataBinder dataBinder = client.createBinder(); 
     final IdcContext userContext = new IdcContext(username); 
     dataBinder.putLocal("IdcService", "DOC_INFO"); 
     dataBinder.putLocal("dID", documentId); 
 
     serviceResponse = client.sendRequest(userContext, dataBinder); 
     final DataBinder response = serviceResponse.getResponseAsBinder(); 
     return response; 
   } catch (final Exception ex) { 
     Logger.getLogger("RIDCBusiness").error("Error en getDocInfoByDocId", ex); 
   } finally { 
     if (serviceResponse != null) 
       serviceResponse.close(); 
   } 
   return null; 
 } 
}
Básicamente obtenemos un número que, de ser mayor que 0, indica el nivel de acceso que tiene el usuario dado sobre el documento deseado.
Los niveles de acceso predefinidos son:
  • READ
  • READ/WRITE
  • READ/WRITE/DELETE
  • READ/WRITE/DELETE/ADMIN
Esta publicación es complemento de la publicación anterior que mostraba como acceder a la información de los folios.

Comentarios

Entradas populares de este blog

El Melange todavía corre

Ese era el estribillo de un capítulo de unas de mis series favoritas de la infancia, Meteoro o Speed Racer. En ese capítulo un auto “fantasma” el X-3, aparecía de imprevisto y dejaba a todos asombrados con su rendimiento y prestaciones y volvía a desaparecer. Traigo ese episodio a colación puesto que recientemente sostuve una amena charla con un querido amigo, en la que el me manifestaba como los Mainframes habían muerto, o mejor dicho, el concepto de la computación distribuida basada en Mainframes había desaparecido. Para variar, yo no estuve de acuerdo, y le dije que por el contrario, el modelo de computación basado en Mainframes está mas vigente que nunca. Estos fueron mis argumentos:

Primeros pasos con Camunda BPM...

... e impresiones. En el competido mercado de las Soluciones de Business Process Management(BPMS) se encuentran diversos fabricantes con productos u opciones de diversa calidad. Por mi foco de carrera o área de trabajo me ha tocado prácticamente trabajar con la gran e inmensa mayoría de todas estas soluciones de software, desde las más sencillas y económicas, las más populares y conocidas, las comerciales, las de código abierto, y hasta las más costosas, “worldclass”, de estas soluciones de BPM. 

Primeros pasos con Camunda BPM – Modelando un Proceso BPMN 2.0

Tenemos entre manos la tercera publicación de nuestra serie sobre la Plataforma de BPM de Camunda .  El día de hoy vamos, por fin, a empezar a modelar o construir nuestro primer proceso sencillo en notación BPMN 2.0. Para ello vamos a usar el modelador o editor que ya hemos instalado en nuestra primera publicación , y vamos a guardarlo en la sección de recursos del proyecto Maven Java que configuramos en la segunda publicación . Así que, como ya es costumbre, manos a las sobras…