[gatein-issues] [JBoss JIRA] (GTNPORTAL-3285) Logic of deleting user is not proper

Peter Palaga (JIRA) issues at jboss.org
Fri Jan 24 08:30:28 EST 2014


    [ https://issues.jboss.org/browse/GTNPORTAL-3285?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12938555#comment-12938555 ] 

Peter Palaga commented on GTNPORTAL-3285:
-----------------------------------------

I am not sure what the last sentence of the previous comment means for the linked pull request. It means that the PR is unnecessary, right? Could you please comment and close the PR if so?
                
> Logic of deleting user is not proper
> ------------------------------------
>
>                 Key: GTNPORTAL-3285
>                 URL: https://issues.jboss.org/browse/GTNPORTAL-3285
>             Project: GateIn Portal
>          Issue Type: Feature Request
>      Security Level: Public(Everyone can see) 
>            Reporter: Tuyen Nguyen The
>            Assignee: Tuyen Nguyen The
>
> I try to add a listener to not allow delete Platform users. for example:
> {code}
> public class IntranetUserEventListenerImpl extends UserEventListener {
>   @Override
>   public void preDelete(User user) throws Exception {
>    //don't allow delete user
>       throw new MessageException(new ApplicationMessage("IntranetUserEventListener.msg.delete-user-read-only-mode-error", null, ApplicationMessage.WARNING));
> }
> {code}
> This listener can help to not allow delete user, but all memberships of user still are deleted.
> Check logic of deleting users (in file https://github.com/exoplatform/gatein-portal/blob/3.5.x-PLF/component/identity/src/main/java/org/exoplatform/services/organization/idm/UserDAOImpl.java): we can see it deletes all membershis of an user before broadcast event "preDelete"
> {code}
> public User removeUser(String userName, boolean broadcast) throws Exception {
> //...
>   
>        try {
>             // Remove all memberships and profile first
>             orgService.getMembershipHandler().removeMembershipByUser(userName, false);
>             orgService.getUserProfileHandler().removeUserProfile(userName, false);
>         } catch (Exception e) {
>             handleException("Cannot cleanup user relationships: " + userName + "; ", e);
>         }
>         User exoUser = getPopulatedUser(userName, session);
>         if (broadcast) {
>             preDelete(exoUser);
>         }
>         try {
>             session.getPersistenceManager().removeUser(foundUser, true);
>         } catch (IdentityException e) {
>             handleException("Cannot remove user: " + userName + "; ", e);
>         }
> //...
> }
> {code}
> Expectation:  
> 1) broadcast preDelete(exoUser) should be run before delete anything
> 2) Delete user and its membership should be run in one transaction

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the gatein-issues mailing list