001: /* -----------------------------------------------------------------------------
002: * Copyright (c) 2001, Low Kin Onn
003: * All rights reserved.
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: *
008: * Redistributions of source code must retain the above copyright notice, this
009: * list of conditions and the following disclaimer.
010: *
011: * Redistributions in binary form must reproduce the above copyright notice,
012: * this list of conditions and the following disclaimer in the documentation
013: * and/or other materials provided with the distribution.
014: *
015: * Neither name of the Scioworks Pte. Ltd. nor the names of its contributors
016: * may beused to endorse or promote products derived from this software without
017: * specific prior written permission.
018: *
019: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
020: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
021: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
022: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
023: * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
024: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
025: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
026: * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
027: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
028: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029: *
030: * -----------------------------------------------------------------------------
031: */
032:
033: package scioworks.imap.presentation;
034:
035: import com.lutris.appserver.server.httpPresentation.*;
036:
037: import org.w3c.dom.*;
038: import org.w3c.dom.html.*;
039:
040: import scioworks.imap.presentation.imapWeb.*;
041: import scioworks.imap.presentation.base.BasePO;
042: import scioworks.imap.presentation.security.*;
043:
044: import javax.mail.*;
045: import javax.mail.internet.*;
046: import javax.activation.*;
047:
048: public class loginAction extends BasePO {
049:
050: // Override login requirement
051: protected boolean isLoginRequired() {
052: return false;
053: }
054:
055: private String login(String username, String password)
056: throws HttpPresentationException {
057:
058: DefaultEmailLogin login = new DefaultEmailLogin(username,
059: password);
060:
061: try {
062: //We need to allow imapWeb_pres to be functional , so if the requested url is imapWeb_pres we dont try to connect to server
063: //to see default HTML pages
064: String uri = m_comms.request.getRequestURI();
065: boolean is = uri.startsWith("/imapWeb_pres");
066:
067: if (is)
068: super .getImapWebSessionData().setImapSession(
069: Session.getDefaultInstance(System
070: .getProperties(), null));
071:
072: // try to login
073: else {
074: login.login();
075:
076: super .getImapWebSessionData().setImapURL(
077: login.getSessionData().getImapURL());
078: super .getImapWebSessionData().setImapSession(
079: login.getSessionData().getImapSession());
080: super .getImapWebSessionData().setImapStore(
081: login.getSessionData().getImapStore());
082: }
083:
084: } catch (ACLException e) {
085: // failed to login
086: return this .showPage(e.getMessage());
087: }
088: welcomeHTML page = (welcomeHTML) m_comms.xmlcFactory
089: .create(welcomeHTML.class);
090: return page.toDocument();
091: }
092:
093: public String handleDefault() throws ServerPageRedirectException,
094: HttpPresentationException {
095:
096: String pUsername = getStringParameter(PARAM_username);
097: String pPassword = getStringParameter(PARAM_password);
098: String pEvent = getStringParameter(PARAM_event);
099:
100: if (pEvent.equals(EVENT_login)) {
101: return login(pUsername, pPassword);
102: } else {
103: return showPage(null);
104: }
105: }
106:
107: public String showPage(String errorMsg) {
108:
109: loginHTML page = (loginHTML) m_comms.xmlcFactory
110: .create(loginHTML.class);
111:
112: //First priority: try to use the passed-in error message
113: // Second priority: try to use the session data's error message
114: // If there are no error messages then clear the prototype error text
115: if (null != errorMsg
116: || null != (errorMsg = this.getImapWebSessionData()
117: .getAndClearUserMessage())) {
118: page.setTextErrorText(errorMsg);
119: } else {
120: page.getElementErrorText().getParentNode().removeChild(
121: page.getElementErrorText());
122: }
123:
124: return page.toDocument();
125: }
126: }
|