1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package de.fraunhofer.fokus.oefit.particity.portlet.login.form;
35
36 import java.util.List;
37
38
39 import javax.portlet.ActionRequest;
40 import javax.portlet.ActionResponse;
41 import javax.portlet.PortletConfig;
42 import javax.portlet.RenderRequest;
43 import javax.portlet.RenderResponse;
44 import javax.servlet.http.HttpServletRequest;
45 import javax.servlet.http.HttpServletResponse;
46 import javax.servlet.http.HttpSession;
47 import javax.validation.Valid;
48
49 import org.springframework.stereotype.Controller;
50 import org.springframework.ui.Model;
51 import org.springframework.validation.BindingResult;
52 import org.springframework.web.bind.annotation.ModelAttribute;
53 import org.springframework.web.bind.annotation.RequestMapping;
54 import org.springframework.web.portlet.bind.annotation.ActionMapping;
55 import org.springframework.web.portlet.bind.annotation.RenderMapping;
56
57 import com.liferay.portal.kernel.exception.SystemException;
58 import com.liferay.portal.kernel.log.Log;
59 import com.liferay.portal.kernel.log.LogFactoryUtil;
60 import com.liferay.portal.kernel.portlet.LiferayPortletConfig;
61 import com.liferay.portal.kernel.servlet.SessionErrors;
62 import com.liferay.portal.kernel.servlet.SessionMessages;
63 import com.liferay.portal.kernel.util.JavaConstants;
64 import com.liferay.portal.model.Role;
65 import com.liferay.portal.model.User;
66 import com.liferay.portal.security.auth.Authenticator;
67 import com.liferay.portal.service.UserLocalServiceUtil;
68 import com.liferay.portal.theme.ThemeDisplay;
69 import com.liferay.portal.util.PortalUtil;
70
71 import de.fraunhofer.fokus.oefit.adhoc.custom.E_Role;
72 import de.fraunhofer.fokus.oefit.adhoc.forms.ProfileForm;
73 import de.fraunhofer.fokus.oefit.particity.portlet.BaseController;
74 import de.fraunhofer.fokus.oefit.adhoc.custom.CustomPortalServiceHandler;
75
76
77
78
79
80
81
82 @Controller("loginController")
83 @RequestMapping("view")
84 public class LoginController extends BaseController {
85
86 private static final Log m_objLog = LogFactoryUtil
87 .getLog(LoginController.class);
88
89 private static final boolean _CHECK_METHOD_ON_PROCESS_ACTION = false;
90
91
92
93
94
95
96 @ModelAttribute("userData")
97 public ProfileForm getUserData() {
98 return new ProfileForm();
99 }
100
101
102
103
104
105
106 protected boolean isCheckMethodOnProcessAction() {
107 return _CHECK_METHOD_ON_PROCESS_ACTION;
108 }
109
110
111
112
113
114
115
116
117
118
119 @ActionMapping(params = "action=login")
120 public void login(@Valid @ModelAttribute("data") final ProfileForm data,
121 final BindingResult result, final ActionRequest request,
122 final ActionResponse response, final Model model) {
123 m_objLog.debug("login::start(" + data.getMail() + ")");
124
125 if (!result.hasErrors()) {
126 try {
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 final ThemeDisplay td = this.getThemeDisplay(request);
150 final int status = UserLocalServiceUtil
151 .authenticateByEmailAddress(
152 td.getCompanyId(), data.getMail(),
153 data.getPass1(),
154 null, null, null);
155
156 if (status == Authenticator.SUCCESS) {
157
158 final User user = UserLocalServiceUtil
159 .getUserByEmailAddress(
160 td.getCompanyId(), data.getMail());
161
162
163
164 final String userIdString = String
165 .valueOf(user.getUserId());
166
167 final HttpServletRequest hrequest = PortalUtil
168 .getHttpServletRequest(request);
169 final HttpSession session = hrequest.getSession();
170
171 session.setAttribute("j_username", userIdString);
172 session.setAttribute("j_password", user.getPassword());
173 session.setAttribute("j_remoteuser", userIdString);
174
175 E_Role erole = null;
176
177 if (user != null && user.getEmailAddress() != null) {
178 List<Role> roles = null;
179 try {
180 roles = user.getRoles();
181 } catch (final SystemException e) {
182 }
183 if (roles != null) {
184 for (final Role role : roles) {
185 erole = CustomPortalServiceHandler.matchesRole(role);
186 if (erole != null) {
187 break;
188 }
189 }
190 }
191 }
192
193 if (erole != null) {
194 response.sendRedirect(erole.getHomeUrl());
195 }
196
197 } else {
198
199 final PortletConfig portletConfig = (PortletConfig) request
200 .getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG);
201 final LiferayPortletConfig liferayPortletConfig = (LiferayPortletConfig) portletConfig;
202 SessionMessages
203 .add(request,
204 liferayPortletConfig.getPortletId()
205 + SessionMessages.KEY_SUFFIX_HIDE_DEFAULT_ERROR_MESSAGE);
206
207
208
209
210 m_objLog.debug("Login failed!");
211 SessionErrors.add(request, "common.form.login.failed");
212
213
214 }
215
216 } catch (final Throwable t) {
217 m_objLog.warn(t);
218 }
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237 }
238
239 m_objLog.debug("login::end");
240 }
241
242
243
244
245
246
247
248
249
250 @RequestMapping(value = "view")
251 @RenderMapping
252 public String render(final RenderRequest request,
253 final RenderResponse response,
254 final Model model) {
255 m_objLog.trace("render::start");
256 String page = request.getParameter("jspPage");
257 if (page == null) {
258 page = "form";
259 }
260 final String error = request.getParameter("error");
261 if (error != null) {
262 model.addAttribute("error", error);
263 m_objLog.warn("Handing over error " + error);
264 final String ePage = request.getParameter("errorPage");
265 if (ePage != null) {
266 page = ePage;
267 }
268 }
269
270 m_objLog.trace("render::end(" + page + ")");
271
272 return page;
273 }
274
275 }