Forums

Home » Liferay Portal » Español » 3. Desarrollo

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Diego Gonzalez
DeleteUser en un plugin extension
September 27, 2012 5:43 AM
Answer

Diego Gonzalez

Rank: New Member

Posts: 2

Join Date: September 26, 2012

Recent Posts

Hola,
Estoy desarrollando un plugin del tipo extension, y estoy modificando la clase CreateAccountAction. Para ello modifique el struts config para que utllice una clase creada por mi, que tiene una copia de la orginal con algunas modificaciones. En esa clase necesito eliminar el usuario creado para ciertos casos. Para ello invoco la función UserServiceUtil.deleteUser(userId), pero cuando se invoca esta función me da la excepción: "com.liferay.portal.security.auth.PrincipalException"

12:34:05,419 WARN [org.apache.struts.action.RequestProcessor] (http--127.0.0.1-8080-4) Unhandled Exception thrown: class com.liferay.portal.security.auth.PrincipalException
12:34:05,424 INFO (http--127.0.0.1-8080-4) 12:34:05,421 ERROR [http--127.0.0.1-8080-4][render_portlet_jsp:154] com.liferay.portal.security.auth.PrincipalException
12:34:05,425 INFO (http--127.0.0.1-8080-4) at com.liferay.portal.service.BaseServiceImpl.getUserId(BaseServiceImpl.java:95)
12:34:05,425 INFO (http--127.0.0.1-8080-4) at com.liferay.portal.service.impl.UserServiceImpl.deleteUser(UserServiceImpl.java:625)
12:34:05,425 INFO (http--127.0.0.1-8080-4) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:122)
12:34:05,426 INFO (http--127.0.0.1-8080-4) at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:71)
12:34:05,426 INFO (http--127.0.0.1-8080-4) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118)
12:34:05,427 INFO (http--127.0.0.1-8080-4) at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:57)
12:34:05,427 INFO (http--127.0.0.1-8080-4) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118)

Busqué por todos lados pero no encuentro nada relacionado, si alguien tiene alguna pista se agradece!
Estoy usando liferay 6.1 en jboss
Saludos!
Jose Jimenez
RE: DeleteUser en un plugin extension
September 27, 2012 2:39 PM
Answer

Jose Jimenez

LIFERAY STAFF

Rank: Regular Member

Posts: 151

Join Date: August 22, 2012

Recent Posts

Hola Diego,

En un proceso de creación de cuenta quizás sea muy arriesgado el acceder a borrar un usuario, ¿no crees? independientemente de tu error original esto podría suponer un agujero de seguridad bastante serio.

Por otro lado cuando se suele realizar una creación de cuenta personalizada, en lugar de sobrescribir la genérica del portal lo que se suele hacer es configurar una URL distinta a la de por defecto, para ello basta con añadir la property company.security.strangers.url=/your-custom-page a tu fichero portal-ext.properties.
En esa página podrás desplegar tu propio portlet de registro y meter toda la lógica que consideres, esto te evitará el migrar la clase original que tu estas modificando y que en futuras actualizaciones podría cambiar, limitándose la migración a la comprobación de que no ha cambiado ninguna llamada a las interfaces del portal en tu propio portlet.

Y por último te respondo a tu error concretol. Hay dos tipos de interfaces para acceder a la capa de servicio de tu instancia (en realidad hay más porque están las interfaces JSON, SOAP, etc) las XXXXServiceUtil y las XXXXLocalServiceUtil.

Respecto a la que estás utilizando comentarte que XXXXServiceUtil hacen una comprobación de que el usuario que hay en sesión tenga permiso para realizar la operación (aunque este sea el usuario Guest/Invitado), mientras que los interfaces del tipo XXXXLocalServiceUtil te darían acceso a operaciones sin comprobación de permisos. Depende de la funcionalidad que estés abordando y donde la estés implementando, te interesará acceder a la capa de servicio a través de unas interfaces u otras.
Las interfaces que comprueban permisos te dan la ventaja de que posteriormente pueden ser gestionados a través del propio sistema de Gestión de Roles y permisos de Liferay por un Administrador.

Demasiado extendido pero espero que te ayude en tu desarrollo y cuidar desde el principio las buenas prácticas emoticon

Saludos!!

Jose
Jose Jimenez
RE: DeleteUser en un plugin extension
September 27, 2012 2:53 PM
Answer

Jose Jimenez

LIFERAY STAFF

Rank: Regular Member

Posts: 151

Join Date: August 22, 2012

Recent Posts

Échale un vistazo al siguiente apartado de la guía de desarrollo, te será muy útil emoticon

http://www.liferay.com/documentation/liferay-portal/6.1/development/-/ai/liferay-ap-1
Diego Gonzalez
RE: DeleteUser en un plugin extension
September 28, 2012 1:37 PM
Answer

Diego Gonzalez

Rank: New Member

Posts: 2

Join Date: September 26, 2012

Recent Posts

Hola Jose,
Muchas gracias, eso solucionó mi problema. De todos modos voy a considerar hacer los cambios que planteaste, muchas gracias por la información también.
Saludos
Jose Jimenez
RE: DeleteUser en un plugin extension
September 29, 2012 7:13 AM
Answer

Jose Jimenez

LIFERAY STAFF

Rank: Regular Member

Posts: 151

Join Date: August 22, 2012

Recent Posts

You are welcome emoticon