You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by mo...@apache.org on 2003/03/05 23:53:21 UTC

cvs commit: jakarta-jetspeed/xdocs changes.xml

morciuch    2003/03/05 14:53:21

  Modified:    docs/site changes.html
               src/java/org/apache/jetspeed/modules/actions/portlets/security
                        UserRoleUpdateAction.java
               xdocs    changes.xml
  Log:
  Assigning new role will merge the role's psml (see Bugzilla issue# 17289)
  
  Revision  Changes    Path
  1.113     +3 -2      jakarta-jetspeed/docs/site/changes.html
  
  Index: changes.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/docs/site/changes.html,v
  retrieving revision 1.112
  retrieving revision 1.113
  diff -u -r1.112 -r1.113
  --- changes.html	26 Feb 2003 17:50:06 -0000	1.112
  +++ changes.html	5 Mar 2003 22:53:21 -0000	1.113
  @@ -5,7 +5,6 @@
           
   <!-- start the processing -->
       <!-- ====================================================================== -->
  -    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
       <!-- Main Page Section -->
       <!-- ====================================================================== -->
       <html>
  @@ -15,7 +14,6 @@
                           
              
                                       
  -                        
               <title>Jetspeed - Jetspeed Changes Log</title>
           </head>
   
  @@ -134,6 +132,9 @@
     action (add/remove/update/fix) - [Bug # xxx -] date - description (committer's initials) [Thanks to developer_name]
   </li>
   -->
  +<li>
  +  Add -   Bug # 17289 - 2003/03/05 - Assigning new role will merge the role's psml (MO)
  +</li>
   <li>
     Add -                 2003/02/26 - ChangeLanguagePortlet, contributed by Dess� Massimiliano (DST)
   </li>
  
  
  
  1.7       +91 -3     jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/portlets/security/UserRoleUpdateAction.java
  
  Index: UserRoleUpdateAction.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/portlets/security/UserRoleUpdateAction.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- UserRoleUpdateAction.java	4 Mar 2003 00:04:54 -0000	1.6
  +++ UserRoleUpdateAction.java	5 Mar 2003 22:53:21 -0000	1.7
  @@ -75,7 +75,13 @@
   // jetspeed services
   import org.apache.jetspeed.services.JetspeedSecurity;
   import org.apache.jetspeed.services.resources.JetspeedResources;
  -
  +import org.apache.jetspeed.services.Profiler;
  +import org.apache.jetspeed.om.profile.ProfileLocator;
  +import org.apache.jetspeed.om.profile.Profile;
  +import org.apache.jetspeed.om.profile.Portlets;
  +import org.apache.jetspeed.services.PsmlManager;
  +import org.apache.jetspeed.util.PortletUtils;
  +import org.apache.jetspeed.services.rundata.JetspeedRunData;
   
   // jetspeed velocity
   import org.apache.jetspeed.modules.actions.portlets.VelocityPortletAction;
  @@ -233,8 +239,14 @@
                       if (newValue == true)
                       {
                           // grant a role to a user
  -                        JetspeedSecurity.grantRole( user.getUserName(),
  -                                                ((Role)roles.get(ix)).getName() );
  +                        Role newRole = (Role) roles.get(ix);
  +                        JetspeedSecurity.grantRole( user.getUserName(), newRole.getName());
  +
  +                        // If role profile merging is active, append profile for the new role
  +                        if (Profiler.useRoleProfileMerging())
  +                        {
  +                            appendNewRoleProfile((JetspeedRunData) rundata, user, newRole);
  +                        }
                       }
                       else
                       {
  @@ -265,6 +277,82 @@
                   duri.addPathInfo(SecurityConstants.PARAM_ENTITY_ID, user.getUserName());
               rundata.setRedirectURI(duri.toString());
   
  +        }
  +    }
  +
  +    /**
  +     * Appends profile for specified role to the end of profile for specified user
  +     * 
  +     * @param user   User to append to
  +     * @param role   Role to append from
  +     * @exception Exception
  +     */
  +    private void appendNewRoleProfile(JetspeedRunData jdata, JetspeedUser user, Role role)
  +    throws Exception
  +    {
  +        // Retrieve the role profile
  +        ProfileLocator roleLocator = Profiler.createLocator();
  +        roleLocator.setRole(role);
  +        roleLocator.setMediaType(jdata.getCapability().getPreferredMediaType());
  +        roleLocator.setName("default.psml");
  +        Profile roleProfile = Profiler.getProfile(roleLocator);
  +        if (roleProfile != null)
  +        {
  +            if (Log.getLogger().isDebugEnabled())
  +            {
  +                Log.debug("UserRoleUpdateAction: retrieved profile for role: " + roleProfile.getPath());
  +            }
  +        }
  +
  +        // Retrieve the user profile
  +        ProfileLocator userLocator = Profiler.createLocator();
  +        userLocator.setUser(user);
  +        userLocator.setMediaType(jdata.getCapability().getPreferredMediaType());
  +        userLocator.setName("default.psml");
  +        Profile userProfile = Profiler.getProfile(userLocator);
  +        if (userProfile != null)
  +        {
  +            if (Log.getLogger().isDebugEnabled())
  +            {
  +                Log.debug("UserRoleUpdateAction: retrieved profile for user: " + userProfile.getPath());
  +            }
  +        }
  +
  +        // Append role profile to user profile
  +        if (roleProfile != null && userProfile != null)
  +        {
  +            Profile tmpProfile = (Profile) roleProfile.clone();
  +            Portlets rolePortlets = tmpProfile.getDocument().getPortlets();
  +            Portlets userPortlets = userProfile.getDocument().getPortlets();
  +
  +            // Handle pane based profile
  +            if (rolePortlets.getPortletsCount() > 0)
  +            {
  +                for (int i = 0; i < rolePortlets.getPortletsCount(); i++)
  +                {
  +                    Portlets pane = rolePortlets.getPortlets(i);
  +                    pane.setLayout(null);                            
  +                    userPortlets.addPortlets(pane);
  +                    if (Log.getLogger().isDebugEnabled())
  +                    {
  +                        Log.debug("UserRoleUpdateAction: appended pane: " + pane.getId() + " to user: " + user.getUserName());
  +                    }
  +                }
  +            }
  +            // Handle profile with no panes
  +            else
  +            {
  +                String title = org.apache.turbine.util.StringUtils.firstLetterCaps(roleProfile.getRoleName());
  +                rolePortlets.setTitle(title + " Home");
  +                rolePortlets.setLayout(null);
  +                userPortlets.addPortlets(rolePortlets);
  +            }
  +
  +            // Regenerate ids
  +            PortletUtils.regenerateIds(userPortlets);
  +
  +            // Save the user profile
  +            PsmlManager.store(userProfile);
           }
       }
   
  
  
  
  1.130     +4 -1      jakarta-jetspeed/xdocs/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/xdocs/changes.xml,v
  retrieving revision 1.129
  retrieving revision 1.130
  diff -u -r1.129 -r1.130
  --- changes.xml	26 Feb 2003 17:50:07 -0000	1.129
  +++ changes.xml	5 Mar 2003 22:53:21 -0000	1.130
  @@ -23,6 +23,9 @@
   </li>
   -->
   <li>
  +  Add -   Bug # 17289 - 2003/03/05 - Assigning new role will merge the role's psml (MO)
  +</li>
  +<li>
     Add -                 2003/02/26 - ChangeLanguagePortlet, contributed by Dess� Massimiliano (DST)
   </li>
   <li>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org