package com.netsyncro.wicketmail; import com.netsyncro.wicketmail.business.LoginDataBean; import com.netsyncro.wicketmail.business.MailboxConnection; import com.netsyncro.wicketmail.business.db.AuthorizedRole; import com.netsyncro.wicketmail.business.db.AuthorizedRolesDao; import com.netsyncro.wicketmail.business.javamail.JavamailConnection; import com.netsyncro.wicketmail.business.misc.AccessDeniedException; import com.netsyncro.wicketmail.business.misc.ConnectionEstablishException; import com.netsyncro.wicketmail.business.stub.StubMailboxConnection; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.wicket.Request; import org.apache.wicket.Session; import org.apache.wicket.Application; import org.apache.wicket.injection.web.InjectorHolder; import org.apache.wicket.protocol.http.WebSession; import org.apache.wicket.spring.injection.annot.SpringBean; import java.security.DigestException; import java.security.NoSuchAlgorithmException; /** * Session. */ public class WicketmailSession extends WebSession { private static final Log log = LogFactory.getLog(WicketmailSession.class); // TODO : Dima just take a look that this is the best route to go for now private String user; private MailboxConnection mailboxConnection; public static WicketmailSession get() { return (WicketmailSession) Session.get(); } public WicketmailSession(final Request request) { super(request); // NOTE : This is my attempt, but tosses a 500 error.. // which points to me needing to create an injector. bla bla. // maybe we want to use google guice injector for this? // See AbstractDao for an example InjectorHolder.getInjector().inject(this); } // TODO : Replace this. Old way that works /* public WicketmailSession(Application application, Request request) { super(application, request); InjectorHolder.getInjector().inject(this); } */ public MailboxConnection getMailboxConnection() { if (mailboxConnection == null) { mailboxConnection = new StubMailboxConnection(); } return mailboxConnection; } public void login(final LoginDataBean loginDataBean) throws ConnectionEstablishException, AccessDeniedException { mailboxConnection = new JavamailConnection(); mailboxConnection.login(loginDataBean); } public boolean isUserLoggedIn() { return mailboxConnection != null; } public void logout() { mailboxConnection.logout(); mailboxConnection = null; } @SpringBean(name = "authorizedRolesDao") private AuthorizedRolesDao dao; public final boolean authenticate(final String username, final String password) throws DigestException, NoSuchAlgorithmException { if (user == null || (null != username && null != password)) { if (dao != null) { AuthorizedRole authorizedroles = dao.retrieve(username, password); if (authorizedroles.getRoleID() != 0) { user = username; } } } return user != null; } }