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 ta...@apache.org on 2004/11/28 20:02:23 UTC

cvs commit: jakarta-jetspeed-2/components/web-content/src/java/org/apache/jetspeed/portlet IFrameGenericPortlet.java SSOIFramePortlet.java

taylor      2004/11/28 11:02:23

  Modified:    components/web-content/src/java/org/apache/jetspeed/portlet
                        IFrameGenericPortlet.java SSOIFramePortlet.java
  Log:
  update to latest api calls, allow for updating of credentials
  
  Revision  Changes    Path
  1.5       +10 -2     jakarta-jetspeed-2/components/web-content/src/java/org/apache/jetspeed/portlet/IFrameGenericPortlet.java
  
  Index: IFrameGenericPortlet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/components/web-content/src/java/org/apache/jetspeed/portlet/IFrameGenericPortlet.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- IFrameGenericPortlet.java	26 Nov 2004 18:56:34 -0000	1.4
  +++ IFrameGenericPortlet.java	28 Nov 2004 19:02:23 -0000	1.5
  @@ -106,7 +106,15 @@
   
       public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException
       {
  -        doIFrame(request, response);
  +        String viewPage = (String)request.getAttribute(PARAM_VIEW_PAGE);
  +        if (viewPage != null)
  +        {
  +            super.doView(request, response);
  +        }
  +        else
  +        {
  +            doIFrame(request, response);
  +        }
       }
   
       public void doEdit(RenderRequest request, RenderResponse response) throws PortletException, IOException
  
  
  
  1.2       +115 -8    jakarta-jetspeed-2/components/web-content/src/java/org/apache/jetspeed/portlet/SSOIFramePortlet.java
  
  Index: SSOIFramePortlet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/components/web-content/src/java/org/apache/jetspeed/portlet/SSOIFramePortlet.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SSOIFramePortlet.java	26 Nov 2004 18:56:34 -0000	1.1
  +++ SSOIFramePortlet.java	28 Nov 2004 19:02:23 -0000	1.2
  @@ -15,16 +15,22 @@
    */
   package org.apache.jetspeed.portlet;
   
  +import java.io.IOException;
   import java.security.AccessControlContext;
   import java.security.AccessController;
   import javax.security.auth.Subject;
   
  +import javax.portlet.ActionRequest;
  +import javax.portlet.ActionResponse;
   import javax.portlet.PortletConfig;
   import javax.portlet.PortletContext;
   import javax.portlet.PortletException;
   import javax.portlet.PortletPreferences;
   import javax.portlet.RenderRequest;
  +import javax.portlet.RenderResponse;
   
  +import org.apache.jetspeed.sso.SSOContext;
  +import org.apache.jetspeed.sso.SSOException;
   import org.apache.jetspeed.sso.SSOProvider;
   
   
  @@ -45,6 +51,8 @@
       public static final String SSO_TYPE_URL_USERNAME = "sso.url.param.username";
       public static final String SSO_TYPE_URL_PASSWORD = "sso.url.param.password";
       
  +    public static final String SSO_REQUEST_ATTRIBUTE_USERNAME = "sso.ra.username";
  +    public static final String SSO_REQUEST_ATTRIBUTE_PASSWORD = "sso.ra.password";
   
       private PortletContext context;
       private SSOProvider sso;
  @@ -59,7 +67,102 @@
              throw new PortletException("Failed to find SSO Provider on portlet initialization");
           }        
       }
  +
  +    public void doEdit(RenderRequest request, RenderResponse response)
  +    throws PortletException, IOException
  +    {
  +        try
  +        {
  +            Subject subject = getSubject();                 
  +            String site = request.getPreferences().getValue("SRC", "");
  +            SSOContext context = sso.getCredentials(subject, site);
  +            getContext(request).put("ssoUserName", context.getUserName());
  +            getContext(request).put("ssoCredential", context.getPassword());
  +        }
  +        catch (SSOException e)
  +        {
  +            if (e.getMessage().equals(SSOException.NO_CREDENTIALS_FOR_SITE))
  +            {
  +                // no credentials configured in SSO store
  +                // switch to SSO Configure View
  +                getContext(request).put("ssoUserName", "");
  +                getContext(request).put("ssoCredential", "");
  +            }
  +            else
  +            {
  +                throw new PortletException(e);
  +            }
  +        }        
  +        
  +        super.doEdit(request, response);
  +    }
  +    
  +    public void doView(RenderRequest request, RenderResponse response)
  +    throws PortletException, IOException
  +    {
  +        String site = request.getPreferences().getValue("SRC", null);
  +        if (site == null)
  +        {
  +            // no credentials configured in SSO store
  +            // switch to SSO Configure View
  +            request.setAttribute(PARAM_VIEW_PAGE, this.getPortletConfig().getInitParameter(PARAM_EDIT_PAGE));
  +            super.doView(request, response);
  +            return;
  +        }
  +        
  +        try
  +        {
  +            Subject subject = getSubject();                 
  +            SSOContext context = sso.getCredentials(subject, site);
  +            request.setAttribute(SSO_REQUEST_ATTRIBUTE_USERNAME, context.getUserName());
  +            request.setAttribute(SSO_REQUEST_ATTRIBUTE_PASSWORD, context.getPassword());
  +        }
  +        catch (SSOException e)
  +        {
  +            if (e.getMessage().equals(SSOException.NO_CREDENTIALS_FOR_SITE))
  +            {
  +                // no credentials configured in SSO store
  +                // switch to SSO Configure View
  +                request.setAttribute(PARAM_VIEW_PAGE, this.getPortletConfig().getInitParameter(PARAM_EDIT_PAGE));
  +            }
  +            else
  +            {
  +                throw new PortletException(e);
  +            }
  +        }        
  +        
  +        super.doView(request, response);
  +    }
  +    
  +    public void processAction(ActionRequest request, ActionResponse actionResponse)
  +    throws PortletException, IOException
  +    {
  +        // save the prefs
  +        super.processAction(request, actionResponse);
           
  +        // save the SSO params
  +        String ssoUserName = request.getParameter("ssoUserName");
  +        String ssoCredential = request.getParameter("ssoCredential");
  +        String site = request.getPreferences().getValue("SRC", "");
  +        try
  +        {
  +            Subject subject = getSubject();
  +            if (sso.hasSSOCredentials(subject, site))
  +            {
  +                sso.updateCredentialsForSite(getSubject(), "TODO", site, ssoCredential);
  +            }
  +            else
  +            {
  +                sso.addCredentialsForSite(getSubject(), "TODO", site, ssoCredential);
  +            }
  +        }
  +        catch (SSOException e)
  +        {
  +            throw new PortletException(e);
  +        }
  +        
  +    }
  +    
       public String getURLSource(RenderRequest request, PortletPreferences prefs)
       {
           String baseSource = super.getURLSource(request, prefs);
  @@ -77,19 +180,19 @@
               {
                   source.append("&");
               }
  -            AccessControlContext context = AccessController.getContext();
  -            Subject subject = Subject.getSubject(context); 
  -            System.out.println("GOT A SUBJECT " + subject);
               source.append(userNameParam);
               source.append("=");
               
  -            // LEFT OFF HERE: get credentials from subject, and pass into SSO component
  +            String userName = (String)request.getAttribute(SSO_REQUEST_ATTRIBUTE_USERNAME);
  +            if (userName == null) userName = "";
  +            String password = (String)request.getAttribute(SSO_REQUEST_ATTRIBUTE_PASSWORD);
  +            if (password == null) password = "";
               
  -            source.append("joey");
  +            source.append(userName);
               source.append("&");
               source.append(passwordParam);
               source.append("=");
  -            source.append("joeys-password");
  +            source.append(password);
               return source.toString();
           }
           else
  @@ -98,6 +201,10 @@
           }
       }
       
  -    
  +    private Subject getSubject()
  +    {
  +        AccessControlContext context = AccessController.getContext();
  +        return Subject.getSubject(context);         
  +    }
       
   }
  
  
  

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