Am 14.02.2011 11:55, schrieb George Niculae:
Attached. The UserHandler is the superclass I use for the pages (voicemail page included as an example), it redirects to the login page but after the login is sent the user is sent to the regular user homepage, not the one he came from.On Mon, Feb 14, 2011 at 12:47 PM, David Becker <[email protected]> wrote:Er, right, forgot to mention that I added the validation code from the Border there and have it set the callback to the current page.Can you share relevant code - will be easier to figure out what's wrong...George _______________________________________________ sipx-dev mailing list [email protected] List Archive: http://list.sipfoundry.org/archive/sipx-dev/
package org.sipfoundry.sipxconfig.microsite;
import org.apache.commons.lang.StringUtils;
import org.apache.tapestry.PageRedirectException;
import org.apache.tapestry.annotations.Bean;
import org.apache.tapestry.annotations.InjectObject;
import org.apache.tapestry.annotations.InjectState;
import org.apache.tapestry.event.PageBeginRenderListener;
import org.apache.tapestry.event.PageEvent;
import org.apache.tapestry.event.PageValidateListener;
import org.apache.tapestry.html.BasePage;
import org.apache.tapestry.valid.ValidatorException;
import org.apache.tapestry.web.WebRequest;
import org.apache.tapestry.web.WebSession;
import org.sipfoundry.sipxconfig.components.PageWithCallback;
import org.sipfoundry.sipxconfig.components.SipxValidationDelegate;
import org.sipfoundry.sipxconfig.security.SipxAuthenticationProcessingFilter;
import org.sipfoundry.sipxconfig.site.UserSession;
public abstract class Login extends PageWithCallback implements
PageBeginRenderListener {
@InjectObject("infrastructure:request")
public abstract WebRequest getHttpServletRequest();
@InjectObject(value = "service:tapestry.globals.WebRequest")
public abstract WebRequest getRequest();
@InjectState(value = "userSession")
public abstract UserSession getUserSession();
@Bean
public abstract SipxValidationDelegate getValidator();
public abstract void setUserName(String user);
public abstract String getUserName();
public void pageBeginRender(PageEvent event) {
if
(StringUtils.isNotEmpty(getRequest().getParameterValue("error"))) {
getValidator().record(new
ValidatorException(getMessages().getMessage("message.loginError")));
// save original http referer in session so we can later
redirect to
WebSession session = getRequest().getSession(false);
if
(session.getAttribute(SipxAuthenticationProcessingFilter.ORIGINAL_REFERER) ==
null) {
session.setAttribute(SipxAuthenticationProcessingFilter.ORIGINAL_REFERER,
getRequest().getHeader(
"Referer"));
}
}
}
}
package org.sipfoundry.sipxconfig.microsite;
import org.apache.tapestry.IExternalPage;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.PageRedirectException;
import org.apache.tapestry.annotations.InjectObject;
import org.apache.tapestry.annotations.InjectPage;
import org.apache.tapestry.annotations.InjectState;
import org.apache.tapestry.callback.ExternalCallback;
import org.apache.tapestry.callback.ICallback;
import org.apache.tapestry.event.PageEvent;
import org.apache.tapestry.event.PageValidateListener;
import org.apache.tapestry.html.BasePage;
import org.apache.tapestry.web.WebRequest;
import org.sipfoundry.sipxconfig.common.CoreContext;
import org.sipfoundry.sipxconfig.common.User;
import org.sipfoundry.sipxconfig.site.UserSession;
/**
* Really simple utility class, by deriving a page class from this it
automatically ensures that
* there is a user logged in and otherwise redirects to the login page.
* @author David Becker
*
*/
public abstract class UserHandler extends BasePage implements
PageValidateListener, IExternalPage {
@InjectState(value = "userSession")
public abstract UserSession getUserSession();
@InjectObject(value = "spring:coreContext")
public abstract CoreContext getCoreContext();
@InjectPage("microsite/xhtml/Login")
public abstract Login getLogin();
@InjectObject("infrastructure:request")
public abstract WebRequest getHttpServletRequest();
public User getUser() {
return getUserSession().getUser(getCoreContext());
}
public void activateExternalPage(Object[] parameters, IRequestCycle cycle) {
}
public void pageValidate(PageEvent event) {
UserSession user = getUserSession();
if (!user.isLoggedIn()) {
ICallback callBack = new
ExternalCallback((IExternalPage) this,
event.getRequestCycle().getListenerParameters());
Login login = getLogin();
login.setCallback(callBack);
String username =
getHttpServletRequest().getParameterValue("username");
if (username == null) {
username = "";
}
login.setUserName(username);
throw new PageRedirectException(login);
}
}
}
package org.sipfoundry.sipxconfig.microsite;
import org.apache.tapestry.annotations.InjectObject;
import org.apache.tapestry.annotations.Persist;
import org.apache.tapestry.event.PageBeginRenderListener;
import org.apache.tapestry.event.PageEvent;
import org.sipfoundry.sipxconfig.common.User;
import org.sipfoundry.sipxconfig.vm.MailboxManager;
import org.sipfoundry.sipxconfig.vm.MailboxPreferences;
import org.sipfoundry.sipxconfig.vm.MailboxPreferences.ActiveGreeting;
public abstract class Voicemail extends UserHandler implements
PageBeginRenderListener {
public static final ActiveGreeting STANDARD_GREETING =
ActiveGreeting.NONE;
public static final ActiveGreeting STANDARD = ActiveGreeting.STANDARD;
public static final ActiveGreeting AWAY = ActiveGreeting.OUT_OF_OFFICE;
public static final ActiveGreeting LONG_AWAY =
ActiveGreeting.EXTENDED_ABSENCE;
@InjectObject(value = "spring:mailboxManager")
public abstract MailboxManager getMailboxManager();
public ActiveGreeting getVmmode() {
MailboxPreferences preferences = getMailboxPreferences();
return preferences.getActiveGreeting();
}
public void setVmmode(ActiveGreeting mode) {
MailboxPreferences preferences = getMailboxPreferences();
preferences.setActiveGreeting(mode);
}
public void pageBeginRender(PageEvent event) {
if (getMailboxPreferences() == null) {
setMailboxPreferences(new MailboxPreferences(getUser()));
}
}
@Persist
public abstract MailboxPreferences getMailboxPreferences();
public abstract void setMailboxPreferences(MailboxPreferences
preferences);
public void onApply() {
getMailboxPreferences().updateUser(getUser());
getCoreContext().saveUser(getUser());
if(getMailboxManager().isEnabled()) {
getMailboxManager().writePreferencesFile(getUser());
}
}
}
Title: Anmeldung
BenutzernamePIN
Title: Voicemail Einstellungen
VoicemailbegrüÃung:
Standard BegrüÃungsnachrichtStandard
Nicht im Büro
Lange Abwesend
Zurück
_______________________________________________ sipx-dev mailing list [email protected] List Archive: http://list.sipfoundry.org/archive/sipx-dev/
