1
14
15 package com.liferay.portlet.iframe.action;
16
17 import com.liferay.portal.kernel.exception.PortalException;
18 import com.liferay.portal.kernel.exception.SystemException;
19 import com.liferay.portal.kernel.util.GetterUtil;
20 import com.liferay.portal.kernel.util.ParamUtil;
21 import com.liferay.portal.kernel.util.StringPool;
22 import com.liferay.portal.kernel.util.Validator;
23 import com.liferay.portal.model.Portlet;
24 import com.liferay.portal.service.PortletLocalServiceUtil;
25 import com.liferay.portal.struts.PortletAction;
26 import com.liferay.portal.theme.ThemeDisplay;
27 import com.liferay.portal.util.PortalUtil;
28 import com.liferay.portal.util.WebKeys;
29 import com.liferay.portlet.iframe.util.IFrameUtil;
30
31 import javax.portlet.PortletConfig;
32 import javax.portlet.PortletPreferences;
33 import javax.portlet.RenderRequest;
34 import javax.portlet.RenderResponse;
35
36 import org.apache.struts.action.ActionForm;
37 import org.apache.struts.action.ActionForward;
38 import org.apache.struts.action.ActionMapping;
39
40
45 public class ViewAction extends PortletAction {
46
47 public ActionForward render(
48 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
49 RenderRequest renderRequest, RenderResponse renderResponse)
50 throws Exception {
51
52 String src = transformSrc(renderRequest, renderResponse);
53
54 if (Validator.isNull(src)) {
55 return mapping.findForward("/portal/portlet_not_setup");
56 }
57
58 renderRequest.setAttribute(WebKeys.IFRAME_SRC, src);
59
60 return mapping.findForward("portlet.iframe.view");
61 }
62
63 protected String getSrc(
64 RenderRequest renderRequest, RenderResponse renderResponse) {
65
66 PortletPreferences preferences = renderRequest.getPreferences();
67
68 String src = preferences.getValue("src", StringPool.BLANK);
69
70 src = ParamUtil.getString(renderRequest, "src", src);
71
72 return src;
73 }
74
75 protected String getUserName(
76 RenderRequest renderRequest, RenderResponse renderResponse)
77 throws PortalException, SystemException {
78
79 PortletPreferences preferences = renderRequest.getPreferences();
80 String userName = preferences.getValue("user-name", StringPool.BLANK);
81
82 return IFrameUtil.getUserName(renderRequest, userName);
83 }
84
85 protected String getPassword(
86 RenderRequest renderRequest, RenderResponse renderResponse)
87 throws PortalException, SystemException {
88
89 PortletPreferences preferences = renderRequest.getPreferences();
90 String password = preferences.getValue("password", StringPool.BLANK);
91
92 return IFrameUtil.getPassword(renderRequest, password);
93 }
94
95 protected String transformSrc(
96 RenderRequest renderRequest, RenderResponse renderResponse)
97 throws PortalException, SystemException {
98
99 PortletPreferences preferences = renderRequest.getPreferences();
100
101 String src = getSrc(renderRequest, renderResponse);
102
103 boolean auth = GetterUtil.getBoolean(
104 preferences.getValue("auth", StringPool.BLANK));
105 String authType = preferences.getValue("auth-type", StringPool.BLANK);
106 String userName = getUserName(renderRequest, renderResponse);
107 String password = getPassword(renderRequest, renderResponse);
108
109 if (auth) {
110 if (authType.equals("basic")) {
111 int pos = src.indexOf("://");
112
113 String protocol = src.substring(0, pos + 3);
114 String url = src.substring(pos + 3, src.length());
115
116 src =
117 protocol + userName + ":" + password +
118 "@" + url;
119 }
120 else {
121 ThemeDisplay themeDisplay =
122 (ThemeDisplay)renderRequest.getAttribute(
123 WebKeys.THEME_DISPLAY);
124
125 String portletId = PortalUtil.getPortletId(renderRequest);
126
127 Portlet portlet = PortletLocalServiceUtil.getPortletById(
128 themeDisplay.getCompanyId(), portletId);
129
130 src =
131 themeDisplay.getPathMain() + "/" + portlet.getStrutsPath() +
132 "/proxy?p_l_id=" + themeDisplay.getPlid() + "&p_p_id=" +
133 portletId;
134 }
135 }
136
137 return src;
138 }
139
140 }