Am 14.02.2011 11:55, schrieb George Niculae:
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/
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.
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
Benutzername

PIN

Title: Voicemail Einstellungen

Voicemailbegrüßung:

Standard Begrüßungsnachricht
Standard
Nicht im Büro
Lange Abwesend

Zurück
_______________________________________________
sipx-dev mailing list
[email protected]
List Archive: http://list.sipfoundry.org/archive/sipx-dev/

Reply via email to