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

Tuyen Nguyen The (JIRA) jira-events at lists.jboss.org
Wed Nov 6 02:32:02 EST 2013


     [ https://issues.jboss.org/browse/GTNPORTAL-3285?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Tuyen Nguyen The updated GTNPORTAL-3285:
----------------------------------------

    Description: 
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

  was:
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 Platform 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


    
> 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) 
>    Affects Versions: 3.7.0.Final
>            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