1 31 32 package org.opencms.jsp; 33 34 import org.opencms.db.CmsLoginMessage; 35 import org.opencms.file.CmsUser; 36 import org.opencms.i18n.CmsMessageContainer; 37 import org.opencms.main.CmsException; 38 import org.opencms.main.CmsLog; 39 import org.opencms.main.OpenCms; 40 import org.opencms.security.CmsAuthentificationException; 41 42 import java.io.IOException ; 43 import java.util.Date ; 44 45 import javax.servlet.http.HttpServletRequest ; 46 import javax.servlet.http.HttpServletResponse ; 47 import javax.servlet.http.HttpSession ; 48 import javax.servlet.jsp.PageContext ; 49 50 import org.apache.commons.logging.Log; 51 52 69 public class CmsJspLoginBean extends CmsJspActionElement { 70 71 72 private static final Log LOG = CmsLog.getLog(CmsJspLoginBean.class); 73 74 75 private CmsException m_loginException; 76 77 80 public CmsJspLoginBean() { 81 82 } 84 85 92 public CmsJspLoginBean(PageContext context, HttpServletRequest req, HttpServletResponse res) { 93 94 super(); 95 init(context, req, res); 96 } 97 98 103 public String getFormLink() { 104 105 return link(getRequestContext().getUri()); 106 } 107 108 115 public CmsException getLoginException() { 116 117 return m_loginException; 118 } 119 120 125 public CmsUser getUser() { 126 127 return getRequestContext().currentUser(); 128 } 129 130 135 public String getUserName() { 136 137 return getRequestContext().currentUser().getName(); 138 } 139 140 146 public boolean isLoggedIn() { 147 148 return !getCmsObject().getRequestContext().currentUser().isGuestUser(); 149 } 150 151 156 public boolean isLoginSuccess() { 157 158 return (m_loginException == null); 159 } 160 161 167 public void login(String userName, String password) { 168 169 login(userName, password, null); 170 } 171 172 182 public void login(String userName, String password, String projectName) { 183 184 HttpSession session = null; 185 m_loginException = null; 186 try { 187 188 getCmsObject().loginUser( 190 userName, 191 password, 192 getRequestContext().getRemoteAddress(), 193 CmsUser.USER_TYPE_SYSTEMUSER); 194 195 session = getRequest().getSession(false); 197 if (session != null) { 198 session.invalidate(); 199 } 200 session = getRequest().getSession(true); 201 if (projectName != null) { 202 getCmsObject().getRequestContext().setCurrentProject(getCmsObject().readProject(projectName)); 204 } 205 206 } catch (CmsException e) { 207 m_loginException = e; 209 } 210 if (m_loginException == null) { 211 if (LOG.isInfoEnabled()) { 213 LOG.info(Messages.get().getBundle().key( 214 Messages.LOG_LOGIN_SUCCESSFUL_3, 215 userName, 216 getRequestContext().addSiteRoot(getRequestContext().getUri()), 217 getRequestContext().getRemoteAddress())); 218 } 219 } else { 220 if (session != null) { 222 session.invalidate(); 223 } 224 225 if (m_loginException instanceof CmsAuthentificationException) { 226 228 if (org.opencms.security.Messages.ERR_LOGIN_FAILED_DISABLED_3 == m_loginException.getMessageContainer().getKey()) { 229 230 LOG.warn(Messages.get().getBundle().key( 232 Messages.LOG_LOGIN_FAILED_DISABLED_3, 233 userName, 234 getRequestContext().addSiteRoot(getRequestContext().getUri()), 235 getRequestContext().getRemoteAddress())); 236 237 } else if (org.opencms.security.Messages.ERR_LOGIN_FAILED_TEMP_DISABLED_5 == m_loginException.getMessageContainer().getKey()) { 238 239 LOG.warn(Messages.get().getBundle().key( 241 Messages.LOG_LOGIN_FAILED_TEMP_DISABLED_5, 242 new Object [] { 243 userName, 244 getRequestContext().addSiteRoot(getRequestContext().getUri()), 245 getRequestContext().getRemoteAddress(), 246 m_loginException.getMessageContainer().getArgs()[3], 247 m_loginException.getMessageContainer().getArgs()[4]})); 248 249 } else if (org.opencms.security.Messages.ERR_LOGIN_FAILED_NO_USER_3 == m_loginException.getMessageContainer().getKey()) { 250 251 LOG.warn(Messages.get().getBundle().key( 253 Messages.LOG_LOGIN_FAILED_NO_USER_3, 254 userName, 255 getRequestContext().addSiteRoot(getRequestContext().getUri()), 256 getRequestContext().getRemoteAddress())); 257 258 } else if (org.opencms.security.Messages.ERR_LOGIN_FAILED_WITH_MESSAGE_1 == m_loginException.getMessageContainer().getKey()) { 259 260 long endTime = CmsLoginMessage.DEFAULT_TIME_END; 262 if (OpenCms.getLoginManager().getLoginMessage() != null) { 263 endTime = OpenCms.getLoginManager().getLoginMessage().getTimeEnd(); 264 } 265 LOG.info(Messages.get().getBundle().key( 266 Messages.LOG_LOGIN_FAILED_WITH_MESSAGE_4, 267 new Object [] { 268 userName, 269 getRequestContext().addSiteRoot(getRequestContext().getUri()), 270 getRequestContext().getRemoteAddress(), 271 new Date (endTime)})); 272 273 } else { 274 275 CmsMessageContainer message = Messages.get().container( 277 Messages.LOG_LOGIN_FAILED_3, 278 userName, 279 getRequestContext().addSiteRoot(getRequestContext().getUri()), 280 getRequestContext().getRemoteAddress()); 281 if (userName.equalsIgnoreCase(OpenCms.getDefaultUsers().getUserAdmin())) { 282 LOG.error(message.key()); 284 } else { 285 LOG.warn(message.key()); 286 } 287 } 288 } else { 289 LOG.error(Messages.get().getBundle().key( 292 Messages.LOG_LOGIN_FAILED_DB_REASON_3, 293 userName, 294 getRequestContext().addSiteRoot(getRequestContext().getUri()), 295 getRequestContext().getRemoteAddress()), m_loginException); 296 } 297 } 298 } 299 300 313 public void login(String userName, String password, String projectName, String redirectUri) throws IOException { 314 315 login(userName, password, projectName); 316 if (m_loginException == null) { 317 if (redirectUri != null) { 318 getResponse().sendRedirect( 319 OpenCms.getLinkManager().substituteLink(getCmsObject(), redirectUri, null, true)); 320 } else { 321 getResponse().sendRedirect(getFormLink()); 322 } 323 } 324 } 325 326 333 public void logout() throws IOException { 334 335 HttpSession session = getRequest().getSession(false); 336 if (session != null) { 337 session.invalidate(); 338 } 339 if (LOG.isInfoEnabled()) { 341 LOG.info(Messages.get().getBundle().key( 342 Messages.LOG_LOGOUT_SUCCESFUL_3, 343 getRequestContext().currentUser().getName(), 344 getRequestContext().addSiteRoot(getRequestContext().getUri()), 345 getRequestContext().getRemoteAddress())); 346 } 347 getResponse().sendRedirect(getFormLink()); 348 } 349 } | Popular Tags |