001 /*
002 * Copyright 2010 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package com.hs.mail.imap.processor;
017
018 import javax.security.auth.login.LoginException;
019
020 import com.hs.mail.imap.ImapConstants;
021 import com.hs.mail.imap.ImapSession;
022 import com.hs.mail.imap.mailbox.MailboxManager;
023 import com.hs.mail.imap.message.request.ImapRequest;
024 import com.hs.mail.imap.message.request.LoginRequest;
025 import com.hs.mail.imap.message.responder.Responder;
026 import com.hs.mail.imap.user.UserManager;
027
028 /**
029 *
030 * @author Won Chul Doh
031 * @since Jan 31, 2010
032 *
033 */
034 public class LoginProcessor extends AbstractImapProcessor {
035
036 @Override
037 protected void doProcess(ImapSession session, ImapRequest message,
038 Responder responder) {
039 LoginRequest request = (LoginRequest) message;
040 String username = request.getUsername();
041 String password = request.getPassword();
042 UserManager manager = getUserManager();
043 try {
044 long userid = manager.login(username, password);
045 session.authenticated(userid);
046 MailboxManager mailboxManager = getMailboxManager();
047 final String inboxName = ImapConstants.INBOX_NAME;
048 if (!mailboxManager.mailboxExists(userid, inboxName)) {
049 if (logger.isDebugEnabled())
050 logger.debug("INBOX does not exist for " + username
051 + ". Creating it.");
052 mailboxManager.createMailbox(userid, inboxName);
053 }
054 responder.okCompleted(request);
055 } catch (LoginException e) {
056 responder.taggedNo(request, "failed. " + e.getMessage());
057 }
058 }
059
060 }